如何基于其在注释中的存在来确定Bean定义的优先级?

时间:2015-06-28 16:21:13

标签: java spring maven

我正在处理数据层,我希望根据maven依赖关系激活一个实现到另一个实现。例如,我将UserDAO作为接口,第一个实现是基于SQL的实现SQLUserDAO,这是我的默认选择。或者,我希望第二个实现LDAP支持LDAPUserDAO。我正在寻找的是,如果它们都存在于依赖列表中,LDAPUserDAO应该被使用,否则SQLUserDAO作为基本实现时LDAPUserDAO不存在。总结一下,如果两个都签出,我希望LDAPUserDAO优先于SQLUserDAO

接口

public interface UserDAO {

SQL实施

@Repository("userDAO")
public class SQLUserDAO implements UserDAO {

LDAP实施

@Repository("userDAO")
public class LDAPUserDAO implements UserDAO {

1 个答案:

答案 0 :(得分:1)

尝试@Primary

  

“表示多个时应该优先考虑bean   候选人有资格自动使用单值依赖。如果   在候选人中确实存在一个“主要”bean,它将是   自动装配的价值。这个注释在语义上等同于    元素在Spring XML中的主要属性。“

对于更多特殊情况,使用PriorityOrdered的BeanFactoryPostProcessor的实现也会有所帮助。 http://rachitskillisaurus.blogspot.co.at/2013/10/spring-force-bean-to-be-first-to.html