今天教大家如何解答面试官提问:谈谈你对Spring IOC和DI的理解?
首先spring IOC(Inversion of Control)全称叫控制反转
在传统的Java程序开发里面我们只能通过new关键字来创建对象,这种方式会导致程序里面对象的依赖关系比较复杂,而且耦合度比较高。
而IOC的主要目的就是实现了对象的管理,也就是我们把设计好的对象交给IOC容器来控制,然后再需要用到目标对象的时候直接从容器中获取,有了IOC容器来管理bean以后相当于把对象的创建和查找依赖、以及对象的控制交给了容器,这种设计理念使得对象和对象之间是一种松耦合的关系,极大的提升了程序的灵活性,以及功能的复用性
然后DI表示依赖注入,也就是说IOC容器中管理的Bean,如果Bean之间从在依赖关系,那么IOC容器需要自动去实现依赖对象的实例注入,通常我们有三种方式去描述Bean和Bean之间的依赖关系:
- 接口注入
- setter注入
- 构造器注入
依赖注入的三种方式https://blog.csdn.net/weixin_69879316/article/details/131689350?spm=1001.2014.3001.5502
另外要更加灵活的去实现Bean实例的依赖注入,Spring还提供了两个注解
@Autowired
@Resource
分别根据Bean的name和Bean的类型去实现依赖注入