(一)概念
IOC (Inversion of Controller), 即控制反转, 是一种设计思想,在 java 开发中意味着把设计好的对象交给容器控制,而不是在对象内部直接控制(由 Spring IOC容器来管理组件对象的生命周期, 负责组件对象的创建和组件对象之间的依赖关系,这样可以大大降低程序各组件之间的耦合关系,符合软件工程中低耦合高内聚的理念)。
(二)创建对象和管理对象
初始化Spring中的Bean工厂,Spring中的Bean工厂会基于Bean对象描述,创建Bean的实例,并有选择性的对实例对象进行管理。
Spring中有两个核心的Map对象,一个用于存储bean的配置信息(xml,注解),一个用于存储bean的实例信息;通过(xml,annotation的方法)描述对象;通过这两个map对象来对bean对象进行管理;通过依赖注入来协同资源。
(三)依赖注入的方式
主要有三种方式:构造函数注入、setter 方法注入与接口注入。
构造函数注入:通过类名反射得到构造函数,通过构造函数注入数据,对象构造完成后便进入就绪状态,可以马上使用,但依赖对象较多时参数列表会较长,对相通类型的参数进行处理可能会比较困难。
setter 方法注入:通过 setter 方法处理多个对象时会比构造函数好,只是不能马上进入就绪状态。
接口注入:强制注入对象不必要的接口,具有较强的侵入性,性能也不见得比上两种好。