首先,Spring IOC,全称控制反转(Inversion of Control)。
(如图)在传统的Java程序开发中,我们只能通过new关键字来创建对象,这种导致程序中对象的依赖关系比较复杂,耦合度较高。
(如图)而IOC的主要作用是实现了对象的管理,也就是我们把设计好的对象交给了IOC容器控制,然后在需要用到目标对象的时候,直接从容器中去获取。
有了IOC容器来管理Bean以后,相当于把对象的创建和查找依赖对象的控制权交给了容器,这种设计理念,使得对象与对象之间是一种松耦合状态,极大提升了程序的灵活性以及功能的复用性。
然后,DI表示依赖注入,也就是对于IOC容器中管理的Bean,如果Bean之间存在依赖关系,那么IOC容器需要自动实现依赖对象的实例注入,通常有三种方法来描述Bean之间的依赖关系。
1. 接口注入
2. setter 注入
3. 构造器注入
另外,为了更加灵活的实现Bean实例的依赖注入,Spring还提供了@Resource和@Autowired这两个注解。
分别是根据bean的id和bean的类型来实现依赖注入。