当我有多个实现ApplicationListener<ContextRefreshedEvent>
接口的bean时,如何在其他bean之前控制某些bean被调用?
在bean本身内部处理依赖项更有意义吗?
答案 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。