Spring Bean的依賴注入方式


一般而言,Spring的依賴注入有三種:構造器注入、setter注入以及接口注入。本文主要講構造器注入與setter注入。

1、構造器注入

       為了讓Spring完成構造器注入,我們需要去描述具體的類、構造方法並設置構造方法的對應參數

代碼如下:

public class Role {

    private Long id;

    private String roleName;

    private String note;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public Role(String roleName, String note) {
        this.roleName = roleName;
        this.note = note;
    }

    public Role() {

    }

    public void run() {
        System.out.println("roleName:" + roleName + ";" + "note:" + note);
    }
}

這個時候是沒有辦法利用無參的構造方法去創建對象的,為了使Spring能正確創建這個對象,需要在xml文件中加入如下bean:

<bean id="role1" class="com.ssm.chapter.pojo.Role">
        <constructor-arg index="0" value="總經理" />
        <constructor-arg index="1" value="公司管理者" />
    </bean>

其中,constructor-arg元素用於定義類構造方法的參數,index用於定義參數的位置,而value是設置值,通過這樣定義spring便知道使用Role(String, String)這樣的構造方法去創建對象了。

2、使用setter注入

      setter注入是Spring最主流的注入方式,它消除了使用構造器注入多個參數的可能性,可以把構造參數聲明為無參的,然后使用setter注入為其設置對應的值。需要注意的是,如果類中沒有構造函數,JVM會默認創建一個無參構造函數。xml代碼清單如下:

 <bean id="role2" class="com.ssm.chapter.pojo.Role" >
        <property name="roleName" value="高級工程師" />
        <property name="note" value="重要人員" />
    </bean>

接着編寫測試類即可:

ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-cfg.xml");
        Role role = (Role) ctx.getBean("role2");
        role.run();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM