一、IOC思想:
之前,程序是主动创建对象,控制权掌握在程序猿手中
使用set注入后,程序不再具有主动性,而是被动得接收对象
从本质上解决了问题,程序猿不用再去管理对象得创建了,系统得耦合性降低,可以专注在业务实现上,这就是IOC得原型
IOC是一种设计思想,DI是它的一种实现方式
所谓控制反转,就是获取依赖对象的方式反转了
采用xml方式配置bean的时候,bean的定义信息和实现是分离的
采用注解的方式,可以把两者合为一体,bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的
控制反转,是通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式
在spring中,实现控制反转的是IOC容器,其实现方法是依赖注入
Hello对象是由谁创建的?Spring
Hello对象的属性是由谁创建的?Spring
控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用spring后,对象是由spring来创建的
反转:程序本身不创建对象,而是被动接受对象
这个过程就是控制反转
依赖注入:利用set方法来进行注入的
IOC:对象由spring来创建,管理,装配
二、IOC创建对象的方式
1. 使用无参构造函数创建对象,默认实现
2. 使用有参构造函数创建对象
2.1 使用下标的方式
2.2 使用类型的方式--不建议使用,类型容易写错,且多个string类型不适用
2.3 直接通过参数名---重点掌握,这个就够了
备注:所有的bean在注册的时候,就已经被容器实例化了,不管你是否引用它
总结:
1. 配置文件加载的时候,容器中管理的对象就已经初始化了