第五章 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"/>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!