在Spring IoC容器中列出注入顺序

时间:2015-12-02 18:14:15

标签: java spring spring-ioc

假设我正在注入一些bean的列表:

@Autowired
List<SomeBean> beans;

在这种情况下什么是默认注射顺序?

我知道Ordered接口和@Order注释,我只询问默认行为。

我注意到的是手动bean注册的情况:

context.register(SomeBeanA.class);
context.register(SomeBeanB.class);
context.register(SomeBeanC.class);

这个bean的注入顺序与我注册的完全相同:列表中的1个元素是SomeBeanA,2个 - SomeBeanB,3个 - SomeBeanC。

这种行为有什么保证吗?我的意思是,我可以确定它在进一步发布时不会改变吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果您想保证自动装配列表的顺序,我会使用订单界面或注释。

实际上,无论如何都会对列表进行排序,并且每个未声明显式顺序的bean都会解析为默认顺序。 (如果我没记错的话,默认为min整数)

看看这堂课: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/annotation/AnnotationAwareOrderComparator.html