spring面试(bean生命周期、循环依赖)

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 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值