针对不同类型的成员变量,在
- JDK内置类型
8种基本类型 + String、数组类型、set集合、list集合、Map计划和、Properties集合。 - 用户自定义类型
针对于不同类型的成员变量,在<property
标签中,需要嵌套其他标签
<property> xxxxx </property>
1. JDK内置类型
1.1、String和8种基本数据类型
直接使用value赋值
<value>bearjun</value>
1.2、数组类型
标签嵌套
<property name="emails">
<list>
<value>www</value>
<value>ccc</value>
<value>bbb</value>
</list>
</property>
1.3、Set集合
set的值无序不可重复
<set>
<value>111</value>
<value>333</value>
<value>111</value>
<ref bean=""/>
<set>.....</set>
</set>
1.4、List集合
标签嵌套任意标签
List集合和数组都用标签
list的值是有序的可重复的
<list>
<value>11111</value>
<value>2222</value>
</list>
<list>
<ref bean="" />
<set> ...</set>
</list>
1.5、Map集合
注意:map的key:value对应一个entry。 ->
<map>
<entry>
<key>
<value>hello</value>
</key>
<value>123</value>
</entry>
<entry>
<key>
<value>hello</value>
</key>
<ref bean=""/>
</entry>
</map>
1.6、Properties类型
Properties是一种特殊的Map,他的key是String value也是String类型
<props>
<prop key="k1">value1</prop>
<prop key="k2">value2</prop>
</props>
1.7、复杂的JDK类型
需要程序员⾃定义类型转换器,处理。
2. ⽤户⾃定义类型
2.1 第一种方式
开发步骤:
- 为成员变量提供set get方法
- 配置文件中进行注入(赋值)
<bean id="userService" class="xxxx.UserServiceImpl">
<property name="userDAO">
<bean class="xxx.UserDAOImpl"/>
</property>
</bean>
2.2 第二种方式
第一种赋值方式存在的问题:
- 配置文件代码冗余(很多service需要注入dao对象,就需要写多次
) - 被注入的Dao对象
,多次创建,浪费JVM内存资源
开发步骤:
- 为成员变量提供 set get ⽅法;
- 配置⽂件中进⾏配置;
<bean id="userDAO" class="com.bearjun.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.bearjun.service.UserServiceImpl">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
<bean id="xxxService" class="com.bearjun.service.xxxx">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
Spring4.x 废除了 <ref local=""/>
基本等效 <ref bean=""/>
;
3. set注入简化写法
3.1 基于属性简化
- JDK 类型注入:
<property name="name">
<value>bearjun</value>
</property>
<!--简化成-->
<property name="name" value="bearjun"/>
注意:JDK类型注入简化:value
属性只能简化8种基本类型 + String 注入标签;
- 用户自定义类型注入:
<bean id="userDAO" class="com.bearjun.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.bearjun.service.UserServiceImpl">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
<!--简化成-->
<bean id="userDAO" class="com.bearjun.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.bearjun.service.UserServiceImpl">
<property name="userDAO" ref="userDAO"/>
</bean>
3.2 基于p命名空间简化
- JDK 类型注入:
<bean id="person" name="p" class="com.bearjun.basic.Person">
<property name="id">
<value>10</value>
</property>
<property name="name">
<value>yusael</value>
</property>
</bean>
<!--简化成-->
<bean id="person" name="p" class="com.bearjun.basic.Person">
<property name="id" value="10" />
<property name="name" value="bearjun" />
</bean>
<!--命名空间p进一步简化成-->
<bean id="person" name="p" class="com.bearjun.basic.Person" p:name="10" p:id="10"/>
- 用户自定义类型注入:
<bean id="userDAO" class="com.bearjun.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.bearjun.service.UserServiceImpl">
<property name="userDAO">
<ref bean="userDAO"/>
</property>
</bean>
<!--命名空间p简化成-->
<bean id="userDAO" class="com.bearjun.dao.UserDAOImpl"></bean>
<bean id="userService" class="com.bearjun.service.UserServiceImpl" p:userDAO-ref="userDAO"/>
评论区