Loading

第五章 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"/>
posted @ 2022-07-17 12:56  苏无及  阅读(195)  评论(0编辑  收藏  举报