bean的注入方式
1)通过set方法注入
<bean id="person1" class="com.example.bean.Person"> <property name="name" value="测试"/> <property name="age" value="20"/> <property name="testList"> <list> <value>value_list_1</value> <value>value_list_2</value> <value>value_list_3</value> </list> </property> <property name="testArray"> <array> <value>array_value1</value> <value>array_value2</value> <value>array_value3</value> </array> </property>
<property name="testList1">
<null/>
</property> </bean>
2)通过构造方法注入(通过该方法注入时,可以使用name属性或者index来表示参数,index代表的是在有参构造器中的参数的位置,name表示的是参数的名称)
<bean id="person2" class="com.example.bean.Person"> <constructor-arg index="0" value="lisi"/> <constructor-arg index="1" value="20"/> <constructor-arg index="2"> <list> <value>value_list_1</value> <value>value_list_2</value> <value>value_list_3</value> </list> </constructor-arg> <constructor-arg index="3"> <array> <value>array_value1</value> <value>array_value2</value> <value>array_value3</value> </array> </constructor-arg> </bean>
3)通过p标签注入
<!-- 将car对象配置到容器中 --> <bean name="car" class="cn.example.bean.Car" > <property name="name" value="兰博基尼" ></property> <property name="color" value="黄色" ></property> </bean> <!-- p名称空间注入, 走set方法 1.导入P名称空间 xmlns:p="http://www.springframework.org/schema/p" 2.使用p:属性完成注入 |-值类型: p:属性名="值" |-对象类型: p:属性名-ref="bean名称" --> <bean name="user3" class="cn.example.bean.User" p:name="jack" p:age="20" p:car-ref="car" > </bean>
注:
注入null值
bean注入的时候可以注入空值,只需要在<property>标签中使用<null/>
<bean id="person1" class="com.example.bean.Person"> <property name="name"> <null/> </property> </bean>
注入的属性值包括特殊符号
例如:注入<<测试>>
1、将<>进行转义< >
<bean id="person1" class="com.example.bean.Person"> <property name="name" value=<<测试>>/> </bean>
2、将内容添加到CDATA中
<bean id="person1" class="com.example.bean.Person"> <property name="name"> <value><![CDATA[<<测试>>]]></value> </property> </bean>
4)外部bean注入
name属性:类中的属性的名称,ref属性:创建的对象的bean标签的id值
<bean id="userService" class="com.example.service.UserService> <property name="userDao" ref="userDaoImpl"/> </bean> <bean id="userDaoImpl" class="com.example.dao.impl.UserDaoImpl></bean>
5)内部bean注入
<bean id="emp" class="com.example.bean.Emp"> <property name="ename" value="测试"/> <!--设置对象类型属性--> <property name="dept"> <bean id="dept" class="com.example.bean.Dept> <property name="dname" value="HR部门"></property> </bean> </property> </bean>
6)级联赋值
第一种写法
<bean id="emp" class="com.example.bean.Emp"> <property name="ename" value="测试"></property> <!--级联赋值--> <property name="dept" ref="dept"></property> </bean> <bean id="dept" class="com.example.bean.Dept"> <property name="dname" value="HR部门"></property> </bean>
第二种写法,必须生成该类中需要级联赋值的对象的getter方法
<bean id="emp" class="com.example.bean.Emp"> <property name="ename" value="测试"></property> <!--级联赋值--> <property name="dept" ref="dept"></property> <property name="dept.name" value="技术部"></property> </bean> <bean id="dept" class="com.example.bean.Dept"> <property name="dname" value="HR部门"></property> </bean>