首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring boot自定义启动器和Spring Data JPA -如何在我自己的自定义自动配置/启动器模块上正确提供存储库

Spring boot自定义启动器和Spring Data JPA -如何在我自己的自定义自动配置/启动器模块上正确提供存储库
EN

Stack Overflow用户
提问于 2020-04-15 01:36:54
回答 1查看 533关注 0票数 2

我正在尝试为我的一个项目编写一个自动配置/启动模块。此模块通过Spring Data JPA处理持久性。它的目标是提供几个spring数据存储库。

现在,我的自动配置如下所示:

代码语言:javascript
运行
复制
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter(JpaRepositoriesAutoConfiguration::class)
@EnableJpaRepositories(basePackageClasses = [ItemRepository::class])
@EntityScan(basePackageClasses = [ItemRepository::class])
class DomainPersistenceDataJpaAutoConfiguration() {

}

正如spring boot reference documentation中所述,尽管@EnableJpaRepositories使用组件扫描,但自动配置不应启用组件扫描。

什么是一种好的替代方法?有没有现有的spring boot start的例子,它提供了我可以参考的存储库实现?

EN

回答 1

Stack Overflow用户

发布于 2020-07-10 17:57:41

您正在寻找的可能是AutoConfigurationPackages#register方法,我认为常见的方法是实现ImportBeanDefinitionRegistrar并使用@Import将此实现导入到您的自动配置中。在Axon框架的RegisterDefaultEntities注解和它导入的DefaultEntityRegistrar中可以看到一个非常优雅的解决方案。这样,您的包将包含在jpa和实体扫描中。

编辑:添加实际示例,因为正如审查指出的那样,链接可能会随着时间的推移而变化。

在您的示例中,ImportBeanDefinitionRegistrar可能如下所示:

代码语言:javascript
运行
复制
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata; 

public class StarterEntityRegistrar implements ImportBeanDefinitionRegistrar {

   @Override
   public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
      AutoConfigurationPackages.register(registry, ItemRepository.class.getPackageName());
   }
}

你的自动配置就是:

代码语言:javascript
运行
复制
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter(JpaRepositoriesAutoConfiguration.class)
@Import(StarterEntityRegistrar.class)
class DomainPersistenceDataJpaAutoConfiguration() {

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61213818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档