文章目录
- 前言
- 一、如何解决注入依赖顺序?
- 二、不生效的到问题
- 三 解决办法
- 总结
前言
spring注入bean的时候,可以指定某些注入顺序
例如:A B两个bean注入,B依赖A ,所以要先注入A 然后才能注入B,此时如何处理呢?
一、如何解决注入依赖顺序?
通过添加注解: @AutoConfigureBefore @AutoConfigureAfter
二、不生效的到问题
例如A B两个要注入的Bean如下
代码如下(示例):
B.java
@Configuration
@AutoConfigureBefore(A.class)
public class B {
}
A.java
@Configuration
public class A {
}
这样确实配置了注入的顺序,先注入A 然后注入B,但是这样配置是不生效的,不生效的原因是因为@Configuration的原因,导致依赖失效了
三 解决办法
不采用@Configuration 注入,仍然是用 @AutoConfigureBefore 或者 @AutoConfigureAfter 进行注入依赖的排序
B.java
@AutoConfigureBefore(A.class)
public class B {
}
A.java
public class A {
}
然后通过spring.factories自动装配文件,注入进去
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.test.A
com.test.B
总结
之所以导致依赖注入顺序时效的原因是由于 类似 @Configuration 等 aop扫描是不分先后顺序的,然后通过 spring.factories文件,是明确了要注入的文件,然后由于文件上有依赖顺序,所以生效!