2016-07-27 35 views
1

構造我有三個豆:電影,導演,英雄的Spring IoC,與構造函數自動裝配,如何國際奧委會將選擇其中多個構造

請與我裸了冗長的代碼,重要的是瞭解我的獻疑:

電影豆:

public class Movie { 

    private Director director; 
    private String name; 

    private Hero hero; 

    public Movie(Director director, Hero hero) { 
     System.out.println("m1"); 
     this.director = director; 
     this.name = name; 
     this.hero = hero; 
    } 

    public Movie(Director director, String name) { 
     System.out.println("m2"); 
     this.director = director; 
     this.name = name; 
    } 

    public Movie(Director director) { 
     System.out.println("m3"); 
     this.director = director; 
    } 

    public Movie() { 
     System.out.println("m4"); 
    } 
} 

主任和英雄豆:

public class Director { 

} 

public class Hero { 

} 

彈簧core.xml

<bean id="movieBean" class="Movie" autowire="constructor" /> 

<bean id="directorBean" class="Director"></bean> 
<bean id="heroBean" class="Hero"></bean> 

請注意,上面的XML我已經宣佈所有的三種豆

MainClass

ApplicationContext context = new ClassPathXmlApplicationContext("spring-core.xml"); 

Movie movie = (Movie) context.getBean("movieBean"); 
System.out.println(movie); 

輸出「m1 「即所謂的構造是Movie(Director director, Hero hero)

我的問題是:爲什麼只有這個構造函數被調用,並 IOC容器將如何在多個構造選擇,而如果我們使用自動裝配使用構造

+1

http://stackoverflow.com/questions/21906361/dependency-injection-with-autowire-constructor-when-multiple-constructors-are – Gangadhar

回答

2

只有注入依賴可以調用一個構造函數來實例化bean。這與創建一個新對象類似,你只調用一個構造函數(如果你想確實精確,是的,你可以鏈構造函數調用這個)

在這種情況下,大多數參數可以由其他上下文中可用的bean將被使用。

+0

是的,謝謝..... – Vishrant

+0

Gangadhar鏈接到我的確切線程要求:http://stackoverflow.com/questions/21906361/dependency-injection-with-autowire-constructor-when-multiple-constructors-are – Vishrant

相關問題