依赖注入的方式

2019-02-15  本文已影响0人  极客_Ls
依赖注入:

依赖于某些方式给Bean的资源进行注入

Spring 支持三种依赖注入的方式
  1. 属性注入
  2. 构造器注入
  3. 工厂方法注入少用、不推荐

一. 属性注入:

laishuai.setAge(12);
<property name="name" value="LaiShuai"></property>
//或者通过
<property name="name">
    < value>value值</value>
</property>

二. 构造器注入:
在xml中:默认为构造器属性顺序进行注入,也可以用index对属性进行顺序标注,type指定数据类型

 //需要根据构造方法的属性顺序依次赋值
 <bean id="persion" class="com.laishuai.bean.Persion">
      <constructor-arg value="二狗子" ></constructor-arg>
      <constructor-arg value="22"></constructor-arg>
 </bean>

//也可以使用index指定属性的顺序,index从0开始
 <bean id="persion" class="com.laishuai.bean.Persion" >
      <constructor-arg value="二狗子" index=0></constructor-arg>
      <constructor-arg value="22"></constructor-arg>
 </bean>

//使用时间序列标志
 <bean id="persion" class="com.laishuai.bean.Persion">
      <constructor-arg value="二狗子" type=“java.lang.String”></constructor-arg>
      <constructor-arg value="22" type=int“”></constructor-arg>
 </bean>
字面值:
//只能使用value标签进行赋值,不能使用value属性
<bean id="persion" class="com.laishuai.bean.Persion">
        <property name="name">
            <value>陈二狗<![CDATA[?]]></value>
        </property>
        <property name="age">
            <value>22</value>
        </property>
    </bean>
引用Bean

省略getter()、setter()方法

package com.laishuai.bean;

public class Persion {
    public String name;
    public int age;
    public Car car;

    @Override
    public String toString() {
        return "Persion{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", car=" + car +
                '}';
    }
}

package com.laishuai.bean;

public class Car {

    private String name;
    private double lenght;
    private double width;

    public Car(String name, double lenght, double width) {
        this.name = name;
        this.lenght = lenght;
        this.width = width;
    }

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


<bean id="car0" class="com.laishuai.bean.Car">
        <constructor-arg value="宝马"></constructor-arg>
        <constructor-arg value="4"></constructor-arg>
        <constructor-arg value="4"></constructor-arg>
</bean>

<bean id="persion3" class="com.laishuai.bean.Persion">
        <property name="name" value="二狗子"></property>
        <property name="age" value="22"></property>
        <property name="car">
            <ref bean="car0"></ref>
        </property>
</bean>
内部Bean

此处 car0 被称为内部Bean

<bean id="persion3" class="com.laishuai.bean.Persion">
        <property name="name" value="二狗子"></property>
        <property name="age" value="22"></property>
        <property name="car">
            <!--<ref bean="car0"></ref>-->
            <bean id="car0" class="com.laishuai.bean.Car">
                <constructor-arg value="宝马X6"></constructor-arg>
                <constructor-arg value="4"></constructor-arg>
                <constructor-arg value="4"></constructor-arg>
            </bean>
        </property>
    </bean>

可以使用<null> 给Bean的字符串或其他对象类型的属性注入 null 值

上一篇 下一篇

猜你喜欢

热点阅读