spring的xml文件配置
1.使用xml装配Bean对象
在applicationContext.xml文件中使用<bean></bean
>标签进行装配。class中写要装配的Bean对象的全类名,id中写该Bean对象的唯一标识。
<bean class="类的全类名" id="该bean对象的唯一标识"></bean>
说明:<bean></bean>
标签中的id属性与name属性的区别
id属性是唯一标识,该属性的值就是该Bean对象的唯一标识号。name属性可以为该Bean对象设置多个别名,每个别名之间可以使用空格或者逗号或者分号分隔;通过任何别名都可以获取到bean对象。但多个Bean对象的name属性值不能相同。
<bean class="类的全类名" name="标识1 标识2 ……"></bean>
2. 基于有参构造函数的依赖注入
2.1 复杂类型的依赖注入
1)通过有参构造函数的方式注入Bean对象
<contructor-arg ref="对象的id属性值"></contructor-arg>
2)通过c命名空间进行依赖注入
在spring的配置文件的约束中引入如下内容:
xmlns:c="http://www.springframework.org/schema/c"
<bean c:有参构造函数的参数列表名-ref=" 对象的id属性值"></bean>
<bean c:_有参构造函数的参数列表索引下标-ref=" 对象的id属性值"></bean>
2.2 简单类型的依赖注入方式
1)使用有参构造函数方式进行依赖注入
<constructor-arg value="属性值"></constructor-arg>
<constructor-arg name="属性名" value="属性值"></constructor-arg>
<constructor-arg index="索引" value="属性值"></constructor-arg>
2)使用c命名空间进行依赖注入
在spring配置文件的约束空间中引入约束
xmlns:c="http://www.springframework.org/schema/c"
3)注入List类型
在List集合中注入简单类型
<list>
<value>值1</value>
<value>值2</value>
……
</list>
在List类型中注入对象
<list>
<ref bean="对象1" />
<ref bean="对象2" />
……
</list>
在List集合中,如果注入的是简单类型,则使用<list><value></value</list>
;如果注入的是非简单类型,则使用<list><ref bean="" /></list>
4)注入Set集合
简单类型注入:
<set>
<value>值1</value>
<value>值2</value>
……
</set>
复杂类型注入:
<set>
<ref bean="对象1" />
<ref bean="对象2" />
……
</set>
下面以在Set中装配对象为例:
注意:此处的Set集合的底层是HashSet,是一个有序的Set集合,可以保持集合中元素的顺序,且集合中的元素不可重复。
5)注入map集合
简单类型的注入:
<map>
<entry key="key1" value="值1" />
<entry key="key2" value="值2" />
……
</map>
复杂类型的注入:
<map>
<entry key="key1" value-ref="对象1" />
<entry key="key2" value-ref="对象2" />
……
</map>
6)注入数组类型
简单类型的注入:
<array>
<value>值1</value>
<value>值2</value>
……
</array>
复杂类型的注入:
<array>
<ref bean="对象1的id" />
<ref bean="对象2的id" />
……
</array>
3. 基于setter方法的依赖注入
3.1 装配简单类型
<property name="属性名" value="属性值"></property>
注意:要区分成员变量与属性名。
成员变量指的是在类中声明定义的变量或者常量;属性名指的是getter/setter方法去掉get/set后留下的部分再将首字母变为小写,例如:setTrack——>Track——>track。
3.2 装配复杂类型
1)利用setter方法装配对象
<property name="属性名" ref="要装配的bean对象的唯一标识"></property>
2)利用setter方法装配数组
元素是简单类型时:
<array>
<value>值1</value>
<value>值2</value>
……
</array>
元素是复杂类型:
<array>
<ref bean="对象1" />
<ref bean="对象2" />
……
</array>
3)利用setter方法装配List
元素是简单类型:
<list>
<value>值1</value>
<value>值2</value>
……
</list>
元素是复杂类型:
<list>
<ref bean="对象1" />
<ref bean="对象2" />
……
</list>
4)利用setter方法装配Map集合
元素是简单类型:
<map>
<entry key="key1" value="值1" />
<entry key="key2" value="值2" />
……
</map>
元素是复杂类型:
<map>
<entry key="key1" value-ref="对象1"/>
<entry key="key2" value-ref="对象2"/>
……
</map>
3.3 使用p名称空间注入
在spring的xml配置文件的空间约束中声明p名称空间的约束:
xmlns:p="http://www.springframework.org/schema/p"
<bean id="标识符" class="要创建的bean对象的类的全类名" p:属性名="属性值"
p:属性-ref="bean对象标识符"></bean>
3.4 使用util名称空间的注入
利用setter方法,针对于List、Map、Set和数组等集合类型的注入。
使用util名称空间需要引入如下约束:
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd"
适用于数组和list集合
<util:list id="标识符">
<ref bean="对象1" />
<ref bean="对象2" />
……
</util:list>
适用于Map集合
<util:map id="标识符">
<!--map集合中的元素是简单类型
<entry key="key1" value="值1" />
<entry key="key2" value="值2" />
……
-->
<!--map集合中的元素是复杂类型
<entry key="key1" value-ref="对象1" />
<entry key="key2" value-ref="对象2" />
……
-->
</util:map>
适用于set集合
<util:set id="标识符">
<!--
set集合中的元素是简单类型
<value>值1</value>
<value>值2</value>
……
-->
<!--
set集合中的元素是复杂类型
<ref bean="对象1" />
<ref bean="对象2" />
……
-->
</util:set>