当我有多个实现ApplicationListener<ContextRefreshedEvent>
接口的 bean 时,如何控制某些 bean 在其他 bean 之前被调用?
在 bean 本身内部处理依赖关系是否更有意义?
在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
.
您可以实现 Ordered 接口来指定此排序。请参阅此博文。