java - Spring数据 Autowiring : Two bean candidates using @Autowired

标签 java spring intellij-idea repository

我有一个 UserRepository,它是使用 Spring Data 从 JPARepository 派生的:

@Transactional
@Repository( value = "userRepo")
@RepositoryDefinition( idClass = Integer.class , domainClass = info.frankmarx.model.User.class  )
public interface UserRepository extends JpaRepository< User , Integer > {

@Transactional(isolation = Isolation.READ_COMMITTED )
User findUserByUserName( String userName );

@Query( "select u from User u where u.isExpired = false and u.isDeleted = false and u.userName = ?1" )
User findActiveUserByName( String userName );

}

存储库在我的 AppConfiguration-Class 中配置:

@Configuration
@EnableJpaRepositories(value = "info.frankmarx.repository" , entityManagerFactoryRef = "entityManagerFactory" , transactionManagerRef = "transactionManager")
@EnableVaadin
public class AppConfiguration {

@WebListener( )
public static class MyContextLoaderListener extends ContextLoaderListener {

}
...
}

applicationContext.xml 中有组件扫描等:

<context:component-scan base-package="info.frankmarx"/>
<context:annotation-config/>
<tx:annotation-driven transaction-manager="transactionManager"/>

但是当我想将此存储库自动连接到这样的服务时:

@Autowired
private UserRepository userRepository;

我总是在 Intellij 中收到错误消息,提示有两个候选 bean,我应该使用限定符注释:

@Qualifier("userRepository")
@Autowired
private UserRepository userRepository;

如果我使用限定符,那么它就可以工作。

但我不知道为什么如果没有@Qualifier它就不起作用。

我真的不知道发生了什么。

非常感谢任何帮助。

最佳答案

通常,当您为相同类型定义了 2 个 bean 时,就会出现错误 there are TWO bean Candidate ,因此在运行时 Spring 需要一种方法来识别您真正想要在此属性中 Autowiring 哪个 bean,

为此,我们使用注释@Qualifier,并在该 bean 的参数中,我们需要提供要 Autowiring 的 bean 的名称。

希望这有帮助!

祝你好运!

关于java - Spring数据 Autowiring : Two bean candidates using @Autowired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30067886/

相关文章:

spring - 如何使用JSTL标签禁用HTML按钮

java - IntelliJ 不创建未知用法的方法

java - Android NFC 写入 NFCA 标签

java - Grails 错误 - 执行 Bootstrap 时出错 : java. lang.ClassNotFoundException: DefaultQuartzConfig

java - 如何使用仅包含选定颜色的 Color 类创建变量?

java - Spring DeferredResult setResult 导致 404

java - 如何在 JSP 文件中为导入的包添加别名?

java - 如何获取 PropertyPlaceHolderConfigurer 中所有属性的列表?

intellij-idea - IntelliJ + Play Framework 路由文件红色下划线错误

git - 如何使用 git 在 Intellij IDEA 中自动查看传入的提交?