2017-04-04 82 views
-1

我有一個名爲「basic」的bean,我想將它連接到另一個名爲callingApp的bean,我該怎麼做?在彈簧中連接兩個bean 4

一號豆

@Bean 
public Phone basic() { 
    Phone phone = new BasicPhone(); 
    return phone; 

} 

第二豆

@Bean 
public CallingApp callingApp() { 



    return new CallingApp(i want to inject bean of BasicPhone here); 
} 
+0

一旦你調用「new」來創建一個bean,它不再在Spring factory con下面特倫。你要麼在春季接線,要麼自己做。 – duffymo

+0

這是在@Configuration類中嗎?如果是這樣,只需調用'basic()':'new CallingApp(basic());' – john16384

+0

@duffymo,這是不正確的。您可以通過編程方式實例化bean,並通過添加'@Bean'將它們添加到spring上下文中。 –

回答

1

如果你提出的方法是放置@Configuration註解的Java類裏面你應該做到以下幾點:

@Bean 
public CallingApp callingApp(Phone phone) { 
    return new CallingApp(phone); 
} 

Spring將按照類型自動裝載依賴關係Phone phone。如果你有多個這種類型的bean,你應該使用@Qualifier("basic"),因爲當你通過註釋一個帶有@Bean的方法來實例化一個bean時,默認情況下,bean的名字將被設置爲方法名。

@Bean 
public CallingApp callingApp(@Qualifier("basic") Phone phone) { 
    return new CallingApp(phone); 
} 

如果你想改變手機類型的bean的名字,你也可以使用@Qualifier如下:

@Bean 
@Qualifier("basicPhone") 
public Phone basic() { 
    Phone phone = new BasicPhone(); 
    return phone; 

} 

編輯如何

一個簡單的例子實現你想要的是以下內容blog post

+0

感謝lulian rosca – sdvadsa