第五章 Set注入详解
针对不同类型的成员变量,在property标签中,需要嵌套其它标签
1.JDK内置类型
1.1 String+8中基本类型
<value>xxx</value>
1.2 数组和List集合
注意list集合的泛型
</property>
<property name="list">
<list>
<value>123@</value>
<value>456@</value>
<value>789@</value>
</list>
</property>
1.3 Set集合
注意Set集合的泛型, 根据泛型的不同, Set标签内部嵌套不同标签
<!--泛型为String-->
<property name="set">
<set>
<value>111</value>
<value>222</value>
<value>333</value>
</set>
</property>
1.4 Map集合
一个entry标签代表一个键值对, key有key标签, value没有特殊标签, 因为key-value都是字符串, 所以使用value标签
<property name="map">
<map>
<entry>
<key><value>qqq</value></key>
<value>www</value>
</entry>
<entry>
<key><value>eeee</value></key>
<value>dddd</value>
</entry>
</map>
</property>
1.5 Properties
key-value都是字符串, 一个prop标签代表一个键值对
<property name="pro">
<props>
<prop key="key1">value1</prop>
<prop key="key2">value2</prop>
</props>
</property>
2.自定义类型
2.1 第一种方式
-
为成员变量提供get set方法
-
配置文件中进行注入(赋值)
<bean id="userService" class="com.dong.UserServiceImpl"> <property name="userDao"> <bean class="com.dong.UserDaoImpl"/> </property> </bean>
2.2 第二种方式
-
第一种方式存在的问题
1. 配置文件代码冗余 2. 被注入的对象,多次创建,浪费内存(JVM)资源
-
为成员变量提供get set方法
-
配置文件进行注入
<bean id="userDao" class="com.dong.UserDaoImpl"/> <bean id="userService" class="com.dong.UserServiceImpl"> <property name="userDao"> <ref bean="userDao"/> </property> </bean>
3.Set注入的简化写法
3.1 基于属性简化
JDK内置类型
<property name="username">
<value>777</value>
</property>
<property name="password">
<value>777</value>
</property>
简化:
<property name="username" value="777"/>
<property name="password" value="777"/>
自定义类型
<property name="userDao">
<ref bean="userDao"/>
</property>
简化:
<property name="userDao" ref="userDao"/>
3.2 基于p命名空间简化
在beans标签引入命名空间
xmlns:p="http://www.springframework.org/schema/p"
JDK内置类型
<bean id="user" class="com.dong.User">
<property name="username" value="777"/>
<property name="password" value="777"/>
</bean>
简化:
<bean id="user" class="com.dong.User" p:username="777" p:password="777"/>
自定义类型
<bean id="userService" class="com.dong.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
简化:
<bean id="userService" class="com.dong.UserServiceImpl" p:userDao-ref="userDao"/>