Java Spring-Bean中属性注入

2017-11-06 20:29:13

  • 类属性的注入的三种方法

1、接口方法注入

public interface injection{
  public void setName(String name);
}

public class Impl implements injection{
  private String name;

  public void setName(String name){this.name = name;}   
}

2、构造方法注入

3、setter方法注入

Spring中支持构造器注入和setter方法注入。

~ Spring中构造器的注入

配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="car" class="spring4.Car">
        <constructor-arg name="n" value="BMW"/>
        <constructor-arg name="p" value="600000"/>
    </bean>


</beans>

 

代码文件:

 

 

public class Car {
    private String name;
    private int price;

    Car(String n, int p) {
        name = n;
        price = p;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

 

如果是对象属性注入,则使用ref  = "id";

~ Spring中Setter方法注入(更常用)

setter方法注入:(必须有无参构造方法)

<bean id="car2" class="cn.itcast.spring3.demo5.Car2">
<!-- <property>标签中name就是属性名称,value是普通属性的值,ref:引用其他的对象 -->
    <property name="name" value="保时捷"/>
    <property name="price" value="5000000"/>
</bean>

如果是对象属性注入,则使用ref  = "id";

  • 名称空间p,简化书写
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="car" class="spring4.Car" p:name="BMW" p:price="1000000">
    </bean>


</beans>
  • SpEL注入

SpEL: 属性的注入 ,Spring3.0 提供注入属性方式 :
语法: #{表达式}

<bean id="" value="#{ 表达式 }">
<bean id="car2" class="cn.itcast.spring3.demo5.Car2">
    <property name="name" value="#{' 大众 '}"></property>
    <property name="price" value="#{'120000'}"></property>
</bean>
<bean id="person" class="cn.itcast.spring3.demo5.Person">
    <!--<property name="name" value="#{personInfo.name}"/>-->
    <property name="name" value="#{personInfo.showName()}"/>
    <property name="car2" value="#{car2}"/>
</bean>
<bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo">
    <property name="name" value=" 张三 "/>
</bean>
  •  集合属性的注入
<bean id="collectionBean" class="demo6.CollectionBean">
<!-- 注入List集合 -->
<property name="list">
    <list>
        <value>童童</value>
        <value>小凤</value>
    </list>
</property>
<!-- 注入set集合 -->
<property name="set">
    <set>
        <value>杜宏</value>
        <value>如花</value>
    </set>
</property>
<!-- 注入map集合 -->
<property name="map">
    <map>
        <entry key="刚刚" value="111"/>
        <entry key="娇娇" value="333"/>
    </map>
</property>
<property name="properties">
    <props>
        <prop key="username">root</prop>
        <prop key="password">123</prop>
    </props>
</property>
</bean>

 

 

posted @ 2017-11-06 21:18  hyserendipity  阅读(1443)  评论(0编辑  收藏  举报