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

设值注入

概念: 指 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的实现和依赖,通过容器中的反射来产生并初始化组件,同时各组件面向接口编程,这样组件间的耦合关系为接口层次

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

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

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值