gpt4 book ai didi

java - 如何根据 Bean 定义是否存在注释来确定其优先级?

转载 作者:行者123 更新时间:2023-12-01 11:22:08 25 4
gpt4 key购买 nike

我正在研究数据层,我想根据 Maven 依赖关系将一个实现激活到另一个实现。例如,我使用 UserDAO 作为接口(interface),第一个实现是基于 SQL 的实现,即 SQLUserDAO,这是我的默认选择。或者,我想要第二种支持 LDAP 的实现,LDAPUserDAO。我正在寻找的是,如果它们都出现在依赖项列表中,则应使用 LDAPUserDAO ,否则当 LDAPUserDAO 为时 SQLUserDAO 作为基本实现不在那里。总之,如果两者都 checkout 的话,我想给予 LDAPUserDAOSQLUserDAO 更高的优先级。

界面

public interface UserDAO {

SQL 实现

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

LDAP 实现

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

最佳答案

尝试@Primary :

"Indicates that a bean should be given preference when multiple candidates are qualified to autowire a single-valued dependency. If exactly one 'primary' bean exists among the candidates, it will be the autowired value. This annotation is semantically equivalent to the element's primary attribute in Spring XML."

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

关于java - 如何根据 Bean 定义是否存在注释来确定其优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com