1

假设我正在注入一些 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。

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

谢谢。

4

1 回答 1

2

如果你想保证自动装配列表的顺序,我会使用 order 接口或注释。

事实上,列表无论如何都是有序的,并且每个未声明显式顺序的 bean 都会解析为默认顺序。(如果我没记错的话,默认是最小整数)

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

于 2015-12-02T18:26:55.977 回答