在我们独立的 Spring 3.1 应用程序中,我们严格地将业务逻辑与 Monitoring Swing 视图分开。视图通过实现一个EventListener
接口来获取它的信息。
要禁用 UI,只需“删除”UI Bean 上的所有内容就足够了,@Services
这样实现此 EventListner 的 UI 类就不会被业务逻辑注入。
但是如何做到这一点?
这个例子给出了我们类的一个小视图:
@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();
}
}