如何解决条件依赖注入
| 我有一个应用程序,它在服务层和dao层上使用基于注释注释的依赖注入。现在要求某些条件下,某些dao将在内存数据结构中而不是db上进行操作。 因此,我正在考虑编写这些dao的新实现。 由于该服务已经具有名称为dao \的注释,因此我不确定如何向其注入内存中的注释。 注入后我应该用内存中的数据库覆盖数据库中的数据库,还是有另一种干净的方法? 如果我使用xml,那么我将对内存dao使用不同的xml。 提前致谢, 阿曼解决方法
如果您的内存中的dao类仅在应使用的情况下存在(更难得:仅在类扫描时发现),则比@Primary可以。
“ 0”表示当找到多个候选对象时,应优先考虑Bean。
也许您还应该看看Spring 3.1功能:Profiles。
另一种方法是编写一个Configuration,根据某些环境Parameter返回在主节点上注释的正确bean:
/**
* I never have tried to inject a bean in a @Configuratution and
* return it as @Bean annotated it with @Primary,so it is an experiment
* I would been glad to know if it works.
*/
@Configuration
public class Switch {
@Value(\"#{systemProperties.inmemmory}\")
private boolean inMemmory;
@Resource
@Qualifier(\"normal\")
private Dao normalDao;
@Resource
@Qualifier(\"inMemmory\")
private Dao inMemoryDao;
@Bean
@Primary
public Dao dao() {
if (inMemmory) {
return inMemory;
} else {
return normalDao;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。