スタンドアロンのSpring3.1アプリケーションでは、ビジネスロジックをMonitoringSwingViewから厳密に分割しました。ビューは、インターフェースを実装することによってその情報を取得しEventListener
ます。
UIを無効にするには、UI Beanのすべてを「削除」して、@Services
このEventListnerを実装するUIクラスがビジネスロジックによって挿入されないようにするだけで十分です。
しかし、これを行う方法は?
この例は、クラスの小さなOerviewを示しています。
@Service
public class UI extends JFrame implements EventListener {
@PostConstruct
public void setup() {
// Do all the Swing stuff
setVisible(true);
}
@Override
public void onBusinessLogicUpdate(final State state) {
// Show the state on the ui
}
}
@Service
public class Businesslogic {
@Autowired
public List<EventListener> eventListeners;
public void startCalculation() {
do {
// calculate ...
for (final EventListener listener : this.eventListeners) {
eventlistener.onBusinessLogicUpdate(currentState);
}
}
while(/* do some times */);
}
}
public class Starter {
public static void main(final String[] args) {
final ApplicationContext context = // ...;
if(uiShouldBedisabled(args)) {
// remove the UI Service Bean
}
context.getBean(Businesslogic.class).startCalculation();
}
}