java - 将存储库 impl 放在非基础包中

标签 java spring spring-data

我不想将我的自定义存储库实现与域包分开。而且,可能是一些通用接口(interface)。例如我想要有这样的结构

  com
       domain
            Foo
            FooRepository
       common
            Bar
       persistence
            BarImpl

interface FooRepository extends Bar{}

<jpa:repositories base-package="com.domain" /> // smt else?

我应该如何配置它?

最佳答案

仅当您将存储库类放在同一个包中并使用默认后缀或定义要手动使用的后缀时,存储库类的自动拾取才有效。因此,在您的场景中,您必须将 FooRepositoryImpl 放入 domain 包中。您可以使用 repository-impl-postfix 属性自定义后缀。如果您想将实现放入另一个包中,您可以使用 fooRepositoryImpl 作为 bean id 手动声明自定义实现 bean。然后该类可以驻留在您想要的任何包中。

我假设 Bar 是包含自定义方法声明的接口(interface)。实际上,我们建议将自定义存储库接口(interface)和实现都放在同一个包中,并对其进行包保护,以避免单独提供给客户。这样,客户端实际看到的只是包含查询方法和手动实现方法的统一存储库界面。

关于java - 将存储库 impl 放在非基础包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300794/

相关文章:

java - 在 Spring 中一起配置 JDBC 和 Hibernate

java - 如何强制 Jetty 使用 IPv4

java - Tomcat : PreResources tag not loading jars

java - 使用带有 spring 的 import.sql 将图像存储为 byte[]

spring - JPA 查询中的 ClassCastException

java - 在 javac (JDK 9) 中混合 --class-path 和 --module-path

java - UNCODE/espace 特殊字符 JSON 数据 Spring MVC

java - 使用 Thymeleaf 在 Spring Boot 中记录 Activity 的最佳方式是什么?

java - spring-data-redis java.lang.ClassCastException

hibernate - ContentNegotiationManager FactoryBean 的 Spring 问题