当前位置: 首页 > 知识库问答 >
问题:

如何将@Qualifier与服务和存储库一起使用

国兴文
2023-03-14

我有一个名为UserRepository的通用存储库接口。然后我有一个接口,它从MyUserRepository扩展而来。它处理一个MyUser类,该类扩展了User。

我还有一个名为UserService的服务接口和一个名为MyUserServiceImpl的类。

该服务需要UserRepository的实例,我虽然可以使用某种注释,如@Qualifer,但它不起作用。

@NoRepositoryBean
public interface UserRepository <T extends User> extends JpaRepository<T, Long>{
    <S extends T> S findByLoginName(String loginName);

    <S extends T> S saveAndFlush(User user);
}

@Repository
@Qualifier("myUserRepository")
public interface MyUserRepository extends UserRepository<MyUser> {

}


public interface UserService {

    public List<User> getUsers();
}

@Service
public class MyUserServiceImpl implements UserService {

    @Autowired
    @Qualifier("myUserRepository")
    private UserRepository<User> userRepository;

    @Override
    public List<User> getUsers() {
....
    }

}

应用程序无法启动

说明:

com中构造函数的参数0。。。。服务。MyUserServiceImpl需要类型为“com…”的bean。。。。存储库。找不到的UserRepository“”。

注入点具有以下注释:-@org。springframework。豆。工厂注释。自动连线(必需=真)

行动:

考虑定义com......存储库类型的bean。配置中的UserRepository。

共有3个答案

赫连明诚
2023-03-14

@限定符与@自动生成的注释一起使用。默认情况下,@autowmed将根据类型注入bean。当您有多个相同类型的bean时,@Qualifer有助于解决冲突。在您的情况下,使用批注@仓库将完成您的工作。此外,在UserRepository接口中,您必须提供Id类以及JPA实体类。

申高卓
2023-03-14

在您的案例中不需要限定符。

@Repository
public interface MyUserRepository extends UserRepository<MyUser> {

}

将存储库自动关联为:

@Service
public class MyUserServiceImpl implements UserService {

    @Autowired
    private UserRepository<User> userRepository;

    ...
吴英武
2023-03-14

@Qualifier注释仅在调用已创建的bean时使用。因此,您不应该在类头上调用,您可以将其命名为@Repository(“myUserRepository”),并在@Autowired@限定符(“myUserRepository”)

 类似资料:
  • 我必须修复以下错误。任何人都可以帮忙 严重:StandardWrapper.Throwable org.SpringFramework.Beans.Factory.BeanCreationException:创建名为“Search Controller”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beanCrea

  • 问题内容: GitLab是一种免费的开放源代码方式,用于托管私有存储库,但它似乎不适用于Go。创建项目时,它将生成以下形式的URL: 哪里: 是gitlab服务器的IP地址 是有权访问私有存储库的用户组 Golang 1.2.1似乎不了解这种语法。 结果是: 有办法让它工作吗? 问题答案: 现在,此问题已在Gitlab 8. *中解决,但仍然不直观。确实,最困难的挑战是,以下步骤将使您克服这些挑战

  • 我一直在努力寻找一些资源来帮助解释我们如何使用Web应用程序服务的文件存储。 可以将其与旧的Web角色一起使用,请参阅此处(在云服务(Web和辅助角色)中使用Azure文件服务)。 但是,“Azure Web服务”中没有OnStart()方法。

  • 我刚刚安装了(而不是更新)GitHub for Windows2.0,而且一辈子我都找不到如何在非GitHub存储库中使用它。在过去,我使用本指南没有任何问题。然而,在2.0版本中,布局发生了变化,我无法找到一个UI来克隆不是来自GitHub的回购。我想我必须使用命令行,但我不知道如何以这种方式使用git。

  • 我一直在修补Spring Cloud配置,但有一个用例,其中配置属性分为两种类型: > 非机密值,开发人员应该能够查看和维护这些值。JDBC的URL等) 秘密值,只能由具有特殊访问权限(如密码)的指定人员查看和维护 因此,我对“复合环境存储库”的支持非常感兴趣,它目前在快照版本中可用。我似乎可以将Git用于开发人员管理的属性,将Vault用于机密属性,并对其进行配置,以便在发生冲突时Vault始终

  • 问题内容: Jenkins中建立一个托管在bitbucket上的项目时,我将在URL字段中输入什么? 该存储库是私有的。 问题答案: 我对Jenkins并不熟悉,但是Bitbucket允许您通过https克隆git存储库,https可以接受密码作为url的一部分,如下所示: