gpt4 book ai didi

java - Spring Data JPA - 如何以编程方式设置 JpaRepository 基础包

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:38 25 4
gpt4 key购买 nike

在 Spring Java Config 类中定义 EntityManager 时,我可以添加基础包以通过在相应构建器上调用方法来扫描实体类:

public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
// Some other configuration here
builder.packages("org.foo.bar", "org.foo.baz");
return builder.build();
}

对于 Spring 查找存储库接口(interface)的地方,我需要类似的东西。通常的方法是使用 @EnableJpaRepositories 注释:

@EnableJpaRepositories(basePackages = {"org.foo.barbaz"})

但我希望有一种动态的方式来定义这些包,类似于上述实体位置的方式。像这样:

public SomeJpaRepositoryFactoryBean entityManagerFactory(JpaRepositoryFactoryBuilder builder) {
// Some other configuration here
builder.packages("org.foo.barbaz");
return builder.build();
}

有没有一种方法可以使用当前的 Spring Data JPA 版本来做到这一点,它根本不应该以这种方式完成吗?

最佳答案

您可以使用 @AutoConfigurationPackage 注释将您的子模块的包添加到 scan-packages。

  1. 从您的子模块
  2. 中删除所有 @EnableJpaRepositories
  3. @AutoConfigurationPackage类添加到子模块的顶层目录(类似于@SpringBootApplication,你必须把这个类到最顶层目录扫描所有子包):

    @AutoConfigurationPackage
    public class ChildConfiguration {
    }
  4. 你的子模块的 /resources/META-INF/spring.factories 下创建 spring.factories 文件 并添加配置类:

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.child.package.ChildConfiguration

现在您可以从核心项目中@Autowired 存储库。 (测试和工作)

关于java - Spring Data JPA - 如何以编程方式设置 JpaRepository 基础包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47635650/

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