我有几个服务正在侦听 Spring 事件以更改我的底层数据模型。这些都是通过实施来工作的ApplicationListener<Foo>
。一旦所有Foo
侦听器都修改了底层数据模型,我的用户界面需要刷新以反映更改(想想fireTableDataChanged()
)。
有什么方法可以确保特定的侦听Foo
器始终是最后一个?或者有什么方法可以在所有其他侦听器完成后调用函数?如果这很重要,我正在使用基于注释的布线和 Java 配置。
我有几个服务正在侦听 Spring 事件以更改我的底层数据模型。这些都是通过实施来工作的ApplicationListener<Foo>
。一旦所有Foo
侦听器都修改了底层数据模型,我的用户界面需要刷新以反映更改(想想fireTableDataChanged()
)。
有什么方法可以确保特定的侦听Foo
器始终是最后一个?或者有什么方法可以在所有其他侦听器完成后调用函数?如果这很重要,我正在使用基于注释的布线和 Java 配置。
您实现的所有 beanApplicationListener
也应该实现Ordered
并提供合理的订单价值。值越低,你的监听器就会越早被调用:
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
以确保始终首先调用您的一个侦听器。