java - 列出 Spring IoC 容器中的注入(inject)顺序

标签 java spring spring-ioc

假设我正在注入(inject)一些 bean 列表:

@Autowired
List<SomeBean> beans;

这种情况下的默认注入(inject)顺序是什么?

我了解 Ordered 接口(interface)和 @Order 注释,我只询问默认行为。

我注意到,在手动 bean 注册的情况下:

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

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

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

谢谢。

最佳答案

如果你想保证 Autowiring 列表的顺序,我会使用 order 接口(interface)或注释。

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

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

关于java - 列出 Spring IoC 容器中的注入(inject)顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050035/

相关文章:

java - Libgdx 在屏幕中使用 InputMultiplexer 覆盖 keyDown

java - 如何从我的查询中获取结果? (MySQL)

java - 连接 Controller 与 Scene Builder 事件

java - Spring:使用 POST 请求保存带有外键的对象

java - 如何在原型(prototype)之间共享实例(Spring LoC)

java - 创建名称为 'application' 的 bean 时出错,未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException

Java多软件线程总是使用主线程

spring - 关于Grails服务的一些问题

java - Rest API Spring 应用程序中选项的最佳使用

java - Autowire 不适用于 Spring Boot 中的自定义 UserDetailsS​​ervice