2012-04-25 21 views
4

可能重複一類:
Anyway to @Autowire a bean that requires constructor arguments?春天 - 自動裝配有一個構造

在我的控制器中我想用@Autowired使用方法/構造函數自動裝配來注入類。例如使用:

@Autowired 
private InjectedClass injectedClass; 

我的問題是,注入的類injectedClass有一個構造函數,我需要一個變量傳遞給來自控制器的構造函數。我如何將值傳遞給構造函數?

+0

蒂姆,我不認爲這是一個duplicat問題 – webmobileDev 2012-04-29 09:27:57

回答

3

您可以使用@Resource(name = "x")註釋標記私有數據成員,也可以使用應用程序上下文XML中的構造函數注入來連接它們。

Spring中可以混合使用註釋和XML配置。它不一定是全部或沒有。

<bean id="myClass" class="foo.bar.MyClass"> 
    <constructor-arg ref="yourArgRefHere"/> 
</bean> 
+0

但yourArgRefHere一些事情的動力,我需要通過代碼 – webmobileDev 2012-04-29 08:39:17

+0

送很難說沒有更多的上下文。也許它不應該在Spring的控制之下;也許你需要一個由Spring管理的工廠,你只需傳入密鑰即可。我不知道。 – duffymo 2012-04-29 13:04:17

5

如果您使用的註解,你可以申請@Autowired註釋MyClass的構造函數,這將自動線豆要傳遞到MyClass的特殊構造。考慮如下。

public class MovieRecommender { 

    @Autowired 
    private MovieCatalog movieCatalog; 

    private CustomerPreferenceDao customerPreferenceDao; 

    @Autowired 
    public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) { 
     this.customerPreferenceDao = customerPreferenceDao; 
    } 

    // ... 
} 
+0

你想不明白我,我需要一個CustomerPreferenceDao的動態構造函數 – webmobileDev 2012-04-29 08:36:29

+0

@webmobileDev - 你沒有在你的問題中提及任何地方...... – James111 2016-07-06 00:08:23

相關問題