春天在什么引导进样依赖有办法注入与在配置文件中提供的类名和构造性的依赖?春 - 基于性能
例如,我有两个版本的通用接口,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