2

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

在 bean 本身内部处理依赖关系是否更有意义?

4

2 回答 2

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.

于 2013-02-12T14:58:01.063 回答
1

您可以实现 Ordered 接口来指定此排序。请参阅此博文

于 2016-07-27T09:39:06.710 回答