Spring属性注入

Posted yanghs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring属性注入相关的知识,希望对你有一定的参考价值。

对于类成员变量,注入方式有三种:

  • 构造函数注入
  • 属性setter方法注入
  • 接口注入

Spring支持前两种

构造函数注入

<bean id="user" class="com.demo.ioc.user">

  <constructor-arg name="name" value="张三"/>

  <constructor-arg name="age" value="23"/>

</bean>

 

属性注入

属性setter方法注入

<bean id="person" class="com.Person">

    <property name="name" value="里斯"/>

    <property name="age" value="32">

    <property name="cat" ref="cat">

</bean>

<bean id="cat" class="com.Cat">

    <property name="name" value="ketty"/>

</bean>

 

p名称

  • 使用p命名空间
  • 为了简化XML文件配置,Spring从2.5开始引入一个新的p名称空间
  • p:<属性名> = "xxx"引入常量值
  • p:<属性名> - ref="xxx"引用其他Bean对象

 

在命名空间中添加

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

<bean id="person" class="com.demo.Person"  p:name="大黄"/>

<bean id="cat" class="com.demo.cat" p:name="小黄"/>

 

SpEL注入

  • SpEL:spring expression language ,spring表达式语言,对依赖注入进行简化
  • 语法:#表达式
  • <bean id="" value="#表达式">

SpEL表达式语言

  语法:#

  #‘hello‘:使用字符串

  #beanId:使用另一个bean

  #beanId.content.toUpperCase():使用指定名属性,并调用它的方法

  #T(java.lang.Math).PI:使用静态字段或方法

 

 

<bean>
    <property name="name" value="#服装"/>
</bean>
<bean id="productInfo" class=""/>
<bean>
    <property name="name"/>
    <property name="price" value="#productInfo.calculatePrice()">
    <property name="category" value="#category"/>
</bean>

 

  

复杂类型的属性注入

1.数组类型的属性注入

2.List集合类型的属性注入

3.Set集合类型的属性注入

4.Map集合类型的属性注入

 

  <!--集合类型的属性注入-->
    <bean id="collectionBean" class="">
        <!--数组类型-->
        <property name="arrs">
            <list>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </list>
        </property>
        <!--List集合的属性注入-->
        <property name="list">
            <list>
                <value>111</value>
                <value>222</value>
                <value>333</value>
            </list>
        </property>
        <!--Map集合的属性注入-->
        <property name="map">
            <map>
                <entry key="aaa" value="111"/>
                <entry key="bbb" value="222"/>
                <entry key="ccc" value="333"/>
            </map>
        </property>
        <!--Properties的属性注入-->
        <property name="properties">
            <props>
                <prop key="username">root</prop>
                <prop key="password">1234</prop>
            </props>
        </property>
    </bean>

 

   

以上是关于Spring属性注入的主要内容,如果未能解决你的问题,请参考以下文章

Spring教程——Spring Bean属性注入

Spring属性注入构造方法注入工厂注入以及注入参数(转)

Spring基于注解方式实现属性注入

六 Spring的配置:属性注入

Spring注入值得2种方式:属性注入和构造注入

Spring注入值得2种方式:属性注入和构造注入