IOC(DI)控制反转:
一、XML配置方式
IOC是一种思想,对对象权的转移,由Spring IoC容器创建对象,然后将对象的使用权交出去。
1、XML配置bean
可以配置多个类型相同的对象,初始化的时候会调用多次构造方法
可以指定获取对象的优先级,primary="true",这样如果通过类型获取,会优先匹配到一个对象
从容器中获取bean
根据id
根据name
id和name的区别
配置
id是唯一的,不会被分割
id="p1,p2,p3",表示为一个id
name可以配置多个,会被分割
name="person1,person2",表示会被拆分为2个name属性【拆分会根据',', ';', ' '】
根据类型
注意,如果注入了两个类型相同的对象,只通过类型获取会报错
我们可以使用name或者id,加上类型的重载方法来获取唯一的对象
也可以如上述,在<bean>标签里加上primary="true",会优先获取这个bean对象。
2、工厂注入
静态工厂
动态工厂
简化的动态工厂
3、属性注入【DI】
给对象中的属性赋值
构造注入
首先必须要提供对应的构造方法
配置
根据属性名称赋值
根据属性下标赋值
结果
简化构造注入
首先引入对应的名称空间
4、设值注入
通过set方法注入
简化
首先引入对应的名称空间
5、其他注入
均有get/set方法
对对象Cat的赋值
数组类型
对象集合
Map集合
Properties
二、Java配置
根据类型获取
也可以指定名称,默认是方法名
自定义name
结果:
可以直接在java类里做初始化赋值操作,set方法设值、无参/构造方法赋值。