https://www.zhihu.com/question/438247718/answer/1730527725
https://jackson0714.github.io/PassJava-Learning/#/88.Interview/09.Spring/01.Spring?id=_6springbean%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e8%af%b4%e8%af%b4%ef%bc%9f
Bean的生命周期
SpringBean 生命周期简单概括为4个阶段:
1、实例化,创建一个Bean对象
2、填充属性,为属性赋值
3、初始化
- 如果实现了xxxAware接口,通过不同类型的Aware接口拿到Spring容器的资源
- 如果实现了BeanPostProcessor接口,则会回调该接口的postProcessBeforeInitialzation和postProcessAfterInitialization方法
- 如果配置了init-method方法,则会执行init-method配置的方法
4、 销毁
- 容器关闭后,如果Bean实现了DisposableBean接口,则会回调该接口的destroy方法
- 如果配置了destroy-method方法,则会执行destroy-method配置的方法
循环依赖主要场景
1、单例的Setter注入(能解决)
2、多例的Setter注入(不能解决)
3、构造器注入(不能解决)
4、单例的代理对象Setter注入(有可能解决)
5、DependsOn循环依赖(不能解决)
单例的Setter注入
这种注入方式应该是spring用的最多的,代码如下:
@Service
public class TestService1 {
@Autowired
private TestService2 testService2;
public void test1() {
}
}
@Service
public class TestService2 {
@Autowired
private