第五章 Set注入详解

针对不同类型的成员变量,在property标签中,需要嵌套其它标签

image

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"/>

作者:苏无及

出处:https://www.cnblogs.com/suwuji/p/16486703.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   苏无及  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示