【面试】讲讲对IOC及其工作流程的理解

控制反转,将原本在程序中手动创建对象的控制权交给第三方容器,在使用的时候,只需要从容器中取对应的对象即可

Spring中提供了很多声明bean的方式,比如使用xml配置文件,@Service注解,在@Configuration修饰的配置类中用@Bean注解来声明Bean等

Spring IOC的工作流程大致可以分为两个阶段:

第一个阶段是IOC容器的初始化,根据程序里定义的bean的声明方式,通过解析和加载后生成BeanDefinition,其中包括bean的定义和基本属性,然后把BeanDefinition注册到IOC容器的Map集合里;

第二个阶段是完成Bean的初始化和依赖注入,先通过反射对没有设置Lazy-init的单例Bean进行初始化,然后完成Bean的依赖注入。

第三个阶段是Bean的使用,通常是通过@AutoWired注解从IOC容器获得Bean的实例;对于设置了Lazy-init属性和非单例的Bean,是在每次获取Bean对象时,调用Bean的初始化方法来完成实例化的

好处:

  • new对象只能new实现类 不能new接口,如果给改接口更换了别的实现类,工程中所有地方都需要改,耦合度高;而用IOC可以之间根据接口进行注入

  • 当一个service中依赖很多其他的类时,用spring容器更容易实现单例,可以避免重复创建service类

视频参考:【Java面试】谈一谈Spring IOC的工作流程?_哔哩哔哩_bilibili

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值