IOC/DI部分
一、IOC
1 中文名称:控制反转
2.英文名称:( Inversion of Control )
3.IoC 是什么
3.1 IoC 完成的事情原先由程序员主动通过 new 实例化对象事情,转交给 Spring 负责
3.2 控制反转中控制指的是:控制类的对象.
3.3 控制反转中反转指的是转交给 Spring 负责.
3.4 IoC 最大的作用:
3.4.1 程序员不需要管理对象.解除了对象管理和程序员之间的耦合.
4、Spring的使用
4.1 导包需要导入一下4个包和一个logging的日志包
4.2 在根目录下创建 applicationContext.xml,applicationContext.xml 中配置的信息最终存储到了 AppliationContext 容器中
4.3 spring 配置文件是基于 schema,每引入一个 xsd 文件是一个 namespace(xmlns)
4.4 对象的创建
4.4.1 通过<bean></bean>创建对象.
属性:id是Bean的唯一标识,要求在整个配置文件中要唯一,
也可使用name属性,bean标签里面的id和name属性都可以用来标识这个配置的对象,
但是id会帮我们检查给对象起的名字是否规范(名字不能重复、不能用数字开头、不能有空格等等),
如果检查出来了那么就会报错name属性不会帮检查这些东西
property 对于所有用set方式来注入的必须使用该标签
value 是对于基本类型,都用value(标签/属性)来注入,可以实现自动的数据类型转换
4.4.2 默认配置文件被加载时创建对象
4.4.3 Bean标签创建对象的三种方式
4.4.3.1:通过构造方法创建
1 <property name="id" value="1"></property> 2 <property name="name" value="Tom"></property> 3 <property name="sex" value="男"></property>
1>默认使用无参构造器,注入时使用property标签,name属性为setter方法去掉set后首字母小写,value为要注入的值,ref为引用其他bean标签
若其中有属性为set,array,list,map,Properties时,则不要value属性,为property添加对应的字标签
在value内部再添加对应类型的字标签,用以赋值,分别为set,array,list,map,props
1 <bean id="other" class="com.briup.test.Other"> 2 <property name="pros"> 3 <props> 4 <prop key="a">5</prop> 5 <prop key="b">9</prop> 6 <prop key="c">7</prop> 7 </props> 8 </property> 9 <property name="map"> 10 <map> 11 <entry key="q" value="1"></entry> 12 <entry key="w" value="3"></entry> 13 <entry key="r" value="8"></entry> 14 <entry key="k" value="0"></entry> 15 </map> 16 </property> 17 <property name="str"> 18 <array> 19 <value>1</value> 20 <value>2</value> 21 <value>3</value> 22 <value>4</value> 23 </array> 24 </property> 25 <property name="list"> 26 <list> 27 <value>哈哈</value> 28 <value>呵呵</value> 29 <value>天天</value> 30 <value>打的</value> 31 <value>啊啊</value> 32 </list> 33 </property> 34 <property name="set"> 35 <set> 36 <value>问我</value> 37 <value>uu</value> 38 <value>看看</value> 39 <value>是谁的</value> 40 <value>啊啊啊</value> 41 </set> 42 </property> 43 </bean>
2>使用有参构造器时,将property表签换为constructor-arg,
属性:index:参数索引,(从0开始)
name:参数名,
type:参数类型。
以上三个旨在唯一确定一个参数,无需同时出现value为要注入的值,ref为引用(若同时匹配多个构造器,默认使用最后一个)
4.4.3.2:通过实例工厂创建
用到的属性:name或id,作为Bean的唯一标识,
factory-bean:创建类所用到的实例化工厂的id,
factory-method:用来创建对象的方法
4.4.3.3:通过静态工厂创建
若实例工厂中,创建对象的方法为静态方法,则只需要在创建工厂对象时添加factory-method属性,指定对应的静态方法即可
二、DI
1. DI:中文名称:依赖注入
2. 英文名称(Dependency Injection )
3. DI 是什么?
3.1 DI 和 IoC 是一样的
3.2 当一个类(A)中需要依赖另一个类(B)对象时,把 B 赋值给 A 的过程就叫做依赖注入.
4、具体使用
在IOC注入时,属性为另一个对象,(该对象使用bean已经创建好),只需要使用ref属性调用该bean的id即可