P名称空间注入

P名称空间注入

P名称空间注入走的也是set方法, 官方目的是简化set注入的property标签的写法

  • bean对象
public class ConstructorDIDaoImpl implements ICustomerDao {

    private int id;
    private String name;
    private int age;
    private Date birthday;

    get/set()......

}

步骤
1. 导入p名称空间

xmlns:p="http://www.springframework.org/schema/p"

2. 书写配置,使用 p: 属性完成注入
- 值类型

p:属性名="值"

- 引用类型

p:属性名-ref="引用对象的名字"

  • 配置文件
<!-- p名称空间注入,说明:p名称空间注入,其实还是调用set方法注入
    第一步:导入p名称空间(位置:
    ..\spring-framework-4.3.8.RELEASE-dist\spring-framework-4.3.8.RELEASE\
    docs\spring-framework-reference\html\beans.html)
    第二步配置:
        p:属性名称:给简单类型的成员变量赋值
        p:属性名称-ref:给其它bean类型的成员变量赋值
 -->
 <bean id="pDao" class="cn.dao.impl.SetDependencyDaoImpl"
    p:id="1" p:name="Hello" p:age="18" p:birthday-ref="now"
 ></bean>
 <bean id="now" class="java.util.Date"></bean>

集合属性注入

顾名思义,就是给类中的集合成员传值,它用的也是 set 方法注入的方式,只不过变量的数据类型都是集合。我们这里介绍注入数组,List,Set,Map,Properties。

  • 数据结构相同,标签可以互换
    • List结构:
      array/list/set
    • Map结构:
      map/entry/props/prop

具体代码如下:

public class CollectionDIServiceImpl implements CustomerService {

    private String[] arr;
    private List<String> list;
    private Set<String> set;
    private Map<String,String> map;
    private Properties prop;

    set/get().......
}
  • 配置文件
<!-- 集合类型数据的注入,说明:
 细节:数据结构相同,标签可以呼唤
    1.list/array/set
    2.map/properties

-->
<bean id="collectionDao" class="cn.dao.impl.CollectionDependencyDaoImpl">
    <!-- 数组 -->
    <property name="array">
        <!-- <array>
            <value>array1</value>
            <value>array2</value>
            <value>array3</value>
        </array> -->
        <list>
            <value>array1</value>
            <value>array2</value>
            <value>array3</value>
        </list>
    </property>

    <!-- list -->
    <property name="list">
        <!-- <list>
            <value>list1</value>
            <value>list2</value>
             <value>list3</value>
        </list> -->
        <array>
            <value>list1</value>
            <value>list2</value>
            <value>list3</value>
        </array>
    </property>

    <!-- set -->
    <property name="set">
        <set>
            <value>set1</value>
            <value>set2</value>
            <value>set3</value>
        </set>
    </property>

    <!-- map -->
    <property name="map">
        <!-- <map>
            <entry key="mapk1" value="mapv1"></entry>
            <entry key="mapk2" value="mapv2"></entry>
            <entry key="mapk3" value="mapv3"></entry>
        </map> -->
        <props>
            <prop key="mapk1">mapv1</prop>
            <prop key="mapk2">mapv2</prop>
            <prop key="mapk3">mapv3</prop>
        </props>
    </property>

    <!-- properties -->
    <property name="prop">
        <!-- <props>
            <prop key="propk1">propv1</prop>
            <prop key="propk2">propv2</prop>
            <prop key="propk3">propv3</prop>
        </props> -->
        <map>
            <entry key="propk1" value="propv1"></entry>
            <entry key="propk2" value="propv2"></entry>
            <entry key="propk3" value="propv3"></entry>
        </map>
    </property>
</bean>

SpEL的方式的属性注入:Spring3.x版本后提供的方式.

SpEL:Spring Expression Language, Spring表达语言

  • 语法:#{ SpEL }
<bean id="pDao" class="cn.dao.impl.SetDependencyDaoImpl"
    p:id="1" p:name="Hello" p:age="18" p:birthday-ref="now"
 ></bean>

<!-- SpEL 的注入的方式 --> 
 <bean id="SpelDao" class="cn.dao.impl.SetDependencyDaoImpl">
    <!-- 
        拿其他对象的属性给自己赋值
        #{其他对象名字.属性名}
    -->
    <property name="id" value="#{pDao.id}"></property>
    <property name="name" value="#{pDao.name}"></property>
    <property name="age" value="#{pDao.age}"></property>
    <property name="birthday" ref="now"></property>
 </bean>

猜你喜欢

转载自blog.csdn.net/Kato_op/article/details/80220750