我有几个服务正在监听 Spring 事件以更改我的底层数据模型。这些都是通过实现 ApplicationListener<Foo>
来实现的。 .一旦所有Foo
监听器修改底层数据模型,我的用户界面需要刷新以反射(reflect)更改(想想 fireTableDataChanged()
)。
有什么方法可以确保 Foo
的特定监听器总是最后?或者有什么方法可以在所有其他监听器完成后调用函数?我正在使用基于注释的布线和 Java 配置,如果这很重要的话。
最佳答案
所有实现 ApplicationListener
的 bean 也应该实现 Ordered
并提供合理的订单值(value)。值越低,你的监听器就会越早被调用:
class FirstListener implements ApplicationListener<Foo>, Ordered {
public int getOrder() {
return 10;
}
//...
}
class SecondListener implements ApplicationListener<Foo>, Ordered {
public int getOrder() {
return 20;
}
//...
}
class LastListener implements ApplicationListener<Foo>, Ordered {
public int getOrder() {
return LOWEST_PRECEDENCE;
}
//...
}
此外,您还可以实现 PriorityOrdered
以确保始终首先调用您的一个监听器。
关于java - 我可以确保我的 Spring ApplicationListener 之一最后执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10898417/