春天在什麼引導進樣依賴有辦法注入與在配置文件中提供的類名和構造性的依賴?春 - 基於性能
例如,我有兩個版本的通用接口,IFileStore
,FileStoreA
和FileStoreB
。我希望能夠確定其中哪些我應該在application.yml
文件中使用。
我知道我可以做這樣的事情:
@Value("${fileStore.class}")
private String fileStoreClassName;
@Bean
public IFileStore fileStore() {
switch(fileStoreClassName) {
case "FileStoreA":
return new FileStoreA();
case "FileStoreB":
return new FileStoreB();
}
}
然而,這感覺真的哈克。我也必須手動提取並提供任何必需的參數給他們。
我的理想是,它是能夠確定哪些基於類的名稱使用,並提供特定的人需要的任何參數,所以如果我添加第三個FileStore
,它會自動神奇的工作和我」 d只需將其用於班級名稱。
當你說「這是能夠確定哪些基於類的名稱使用」。它是什麼'?你是否自動連線這些物件?你如何使用FileStore? – robjwilkins
是的。基本上我的實際需要直接使用它的類倒是'@Autowired IFileStore fileStore',不管底層的實現。這個例子'FileStore'只是有三個功能:'得到()','保存()'和'有()'基本「文件」的訪問(不一定是在文件系統上的實際文件)。 – samanime