【Spring】设值注入和构造注入

来源:互联网 发布:最好听的英文歌知乎 编辑:程序博客网 时间:2024/06/05 04:07

设值注入

概念: 指 IoC容器通过成员变量的setter方法来注入被依赖对象

接口

public interface User{    public addCard();}
public interface Card{    public String getCardId();}

接口的实现

public class Employee impements User{    private Card card;    public void setCard(Card card){        this.card = card;    }    public void addCard(){        System.out.println(card.getCardId);    }}
public class BankCard impements Card{    public String getCardId(){        return "cardid";    }}
public class ElectricityCard impements Card{    public String getCardId(){        return "cardid";    }}

XML 配置文件

<beans ....>    <bean id="employee" class="com.service.impl.Employee">        <property name="card" ref="bankCard" />    </bean>    <bean id="bankCard" class="com.service.impl.BankCard" />    <bean id="electricityCard" class="com.service.impl.ElectrictyCard " /></beans>

main方法

public static void main(String[] args) throws Exception {    ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");    Employee e = ac.getBean( "employee" , User.class );}

 
 

构造注入

概念: 利用构造器,在构造实例时,为其完成依赖关系的初始化

接口同上
……..

部分实现

public class Employee impements User{    private Card card;    public Employee(Card card){        this.card = card;    }    public void addCard(){        System.out.println(card.getCardId);    }}

XML 配置文件

<beans ....>    <bean id="employee" class="com.service.impl.Employee">        <constructor-arg ref="electricityCard" />    </bean>    <bean id="bankCard" class="com.service.impl.BankCard" />    <bean id="electricityCard" class="com.service.impl.ElectrictyCard " /></beans>

 
 

小结

在Spring中,采用配置文件管理Bean的实现和依赖,通过容器中的反射来产生并初始化组件,同时各组件面向接口编程,这样组件间的耦合关系为接口层次

设置注入更容易理解,多数采用这种方式;构造注入可以决定依赖关系的注入顺序,但是可能会导致构造器笨重

对于依赖关系无须变化的注入,采用构造注入;而其他依赖关系的注入,采用设值注入。

阅读全文
0 0
原创粉丝点击