如何控制调用ApplicationListener bean的顺序?

时间:2013-02-12 14:42:45

标签: java spring

当我有多个实现ApplicationListener<ContextRefreshedEvent>接口的bean时,如何在其他bean之前控制某些bean被调用?

在bean本身内部处理依赖项更有意义吗?

2 个答案:

答案 0 :(得分:1)

AbstractApplicationContext中,我可以看到以下代码段,负责注册ApplicationListener已实施的bean。

Collection listeners = getBeansOfType(ApplicationListener.class, true, false).values();
for (Iterator it = listeners.iterator(); it.hasNext();) {
  addListener((ApplicationListener) it.next());
}

此处getBeansOfType发现返回Map,因此排序非确定性。这是spring-2.0的情况。

答案 1 :(得分:1)

您可以实现Ordered接口来指定此顺序。请参阅this blogpost