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

手动设置SpringDataJPA存储库,带有自定义实现

丁宏浚
2023-03-14

我正在尝试手动定义自定义 spring 数据存储库,我有以下 3 类:

public interface PersonRepository extends JpaRepository<Person, Long>...

public interface PersonRepositoryCustom 

public class PersonRepositoryImpl implements PersonRepositoryCustom {
  @Resource
private PersonRepository personRepository;
......
}

要在配置类中配置它,我有以下内容:

@Bean
public PersonRepositoryImpl personRepositoryImpl() {
return new PersonRepositoryImpl();
}

@Bean
public PersonRepository personRepository() {
    return getFactoryBean(PersonRepository.class, personRepositoryImpl());
}

private <T> T getFactoryBean(Class<T> repository, Object customImplementation) {
    BaseRepositoryFactoryBean factory = new BaseRepositoryFactoryBean();
    factory.setEntityManager(entityManager);
    factory.setBeanFactory(beanFactory);
    factory.setRepositoryInterface(repository);
    if (customImplementation != null) {
        factory.setCustomImplementation(customImplementation);
    }
    factory.afterPropertiesSet();
    return (T) factory.getObject();

}

我遇到的问题是我收到“创建名为'personRepository'的 bean 时出错:请求的 bean 当前正在创建中:是否有无法解析的循环引用”

这似乎是因为PersonRepositoryImpl包含对personRepository接口的资源引用。

如果我在config类上使用EnableJpaRepositories,那么一切似乎都很好。但是我不想使用那个注释,它基于包扫描,我想要更细粒度的可配置性。

那么,有人知道如何手动设置spring自定义存储库,从而允许在没有循环引用问题的情况下进行注入吗?

任何人

共有1个答案

公孙芷阳
2023-03-14

您可以创建一个自定义存储库接口扩展存储库

 类似资料:
  • 我通过Java Admin API使用Google的Firebase存储在Spring Boot应用程序中存储文件。出于安全考虑,我为每个客户组织创建了一个单独的存储桶。由于我经常使用我的测试环境,所以我经常删除和创建这些存储桶。我在找人帮忙把这些水桶更快地装进火力点。 null null

  • 在我的项目中有几个实体具有相同的属性(对于示例'name'),所以,有可能创建一个存储库,其中使用自定义的select(实体)?因此,我从JpaRepository扩展了我的存储库,我扩展了MyCustomJpaRepository,MyCustomJpaRepository也扩展了JpaRepository,使其能够从JpaRepository授予基本功能? TKS

  • 我目前正在spring boot中编写一个应用程序,并正在构建自己的自定义存储库。 首先,这里是有问题的代码: 启动应用程序后,它会失败,并出现以下堆栈跟踪: 非常感谢您的帮助:) 注意:此设置以前与JPA存储库一起使用,因此这不是服务调用它的问题,而是新服务存储库的故障。

  • 我正在使用100个实体(使用JHipster)设置一个新的Spring Boot API,我的问题是:鉴于我有一组存储库层方法,我希望我的所有存储库都能够调用这些方法。 我已经尝试制作所有接口来扩展('RepositoryQuery'是我默认的自定义接口名称后缀),然后使用特定于实体的类。请注意,所有的类扩展了一个泛型实现类,名为。 请注意,给定正则表达式中的“.*”代表我的持久实体集中的任何实体

  • 我尝试过用Spring Boot实现JPA存储库,它工作得很好。现在,如果我尝试在使用@query注释扩展JpaRepository的接口中实现自定义查询,它可以很好地返回bean列表(使用NamedQuery)。现在,当我尝试为自定义方法/查询使用分页时,它不起作用。 代码: 控制器: 服务 异常:java.lang.IllegalArgumentException:为TypedQuery[ja

  • 项目配置为使用多个MongoTemplate Mongo Ref传递为 问题:我需要访问MongoTemplate,它是类似的标准存储库。 例如,如果正在将接口扩展为 MyRepoCustomImpl 问题:相反,难道没有任何方法可以让要使用的MongoTemplate根据它扩展到的Repo自动注入或解析吗?

  • 我使用的是Spring数据JPA1.10.11。释放 我有一个基础存储库,所有其他存储库都会扩展它。这部分有效。 我还想为一些要扩展的存储库声明一个自定义接口。所以我声明了一个接口和一个“Impl”类: 然后,我创建一个现有的工作存储库来扩展这个新接口: 注意:此存储库在扩展TestRepository之前工作,但是在如上扩展之后,应用程序上下文将无法以错误开始: 配置如下所示: 我觉得我一直在遵

  • 我发现对于减少样板非常有用,但它似乎给工作带来了麻烦。我现在试图用自定义的基类存储库扩展,而在启动时,Spring在正确实例化存储库方面遇到了问题。 我已经尝试了几个关于这个主题的变体,但是没有运气让事情成功地连线起来。我在Spring的问题跟踪器https://jira.spring.io/browse/datajpa-674上遇到了一个类似的问题,但没有关于修复的解释,只是对代码进行了重构,使