gpt4 book ai didi

java - 如何将Repository和Repository实现拆分到不同的模块?

转载 作者:行者123 更新时间:2023-11-30 06:24:04 25 4
gpt4 key购买 nike

各位!

我的应用程序中有两个 Maven 模块 - 域和持久性。

域具有域对象、服务和外部端点的“数据提供者”接口(interface),例如持久性。域包含业务逻辑并且没有外部依赖项 - 他对持久性一无所知。

持久性取决于域。它实现了域模块中的“数据提供者”接口(interface)。可能是关系型db实现、nosql实现、文件实现等。

例如,我在域中有接口(interface)PersonRepository,如下所示:

public interface PersonRepository {
List<Person> findAll();
List<Customer> findByLastName(String lastName);
}

我想使用 Spring Data JPA 实现数据提供者接口(interface)。我需要写这样的东西:

public interface PersonRepository extends CrudRepository<Person, Long> {
List<Person> findAll();
List<Person> findByLastName(String lastName);
}

但我不想将 spring 依赖项注入(inject)“核心域”。我想让我的领域保持轻量级和独立性。

有没有办法在Persistence模块中使用Spring Data实现PersonRepository?

最佳答案

您无需通过 Spring Data 扩展现成的接口(interface),只需复制自己接口(interface)中的方法即可。通常,您只需在其上添加一个 @Repository 注释,Spring Data 就会完成其工作。但这会重新引入依赖性。

所以你可以做的是在 Spring 配置中调用 JpaRepositoryFactory.getRepository你自己。像这样的东西应该有效:

@Bean
public PersonRepository(RepositoryFactorySupport factory) {
return factory.getRepository(PersonRepository.class);
}

这将位于您的持久性模块中,或者位于用于连接所有模块的第三个模块中,因此依赖项不应该成为问题。

关于java - 如何将Repository和Repository实现拆分到不同的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47581906/

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