条件依赖注入

| 我有一个应用程序,它在服务层和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;
        }
    }
}
    

要回复问题请先登录注册