【问题标题】:Spring data entities in different packages不同包中的Spring数据实体
【发布时间】:2016-09-16 20:18:11
【问题描述】:

我是 Spring 新手,想在 Spring Boot 应用程序中使用以下项目结构。

  1. 针对每种类型的实体及其相应的存储库实现提供不同的包。
  2. 存储库配置包

*

**com.demo.Customer**
    Customer.java
    CustomerRepository.java
    Application.java

**com.demo.Order**
    Order.java
    OrderRepository.java

**com.demo.config**
    ApplicationConfig.java
    CustomerConfig.java
    OrderConfig.java

CustomerConfig.java

import com.demo.cstore.core.Customer;
@Configuration
@EnableJpaRepositories(basePackageClasses = Customer.class)
public class CustomerConfiguration {

}

Application.java

@SpringBootApplication
@ComponentScan(basePackages = {"com.demo.order"}) //inject repository from other packages
public class Application {
    private static final Logger log = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

编译并运行应用程序后,仅创建客户实体。那是因为应用程序文件只识别客户实体,因为它存在于同一包 com.demo.Customer 中。 Order实体如何注入并创建实体?

【问题讨论】:

    标签: jpa spring-boot spring-data-jpa


    【解决方案1】:

    EnableJpaRepositories 注释接受字符串数组basePackages,您可以在此处添加您的实体所在的所有包:

     @EnableJpaRepositories(basePackages={"com.demo.order"
    ,"com.demo.customer"
    ,"com.demo.config"})
    

    那一定足够了。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您不需要使用 @ComponentScan。 根据文档

      @SpringBootApplication 注解等价于使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 及其 默认属性

      所以您可以在位于包层次结构的基础包中的主类上使用 @SpringBootApplication 就可以了。

      您也可以参考此链接了解如何构建代码和主类位置

      http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-structuring-your-code.html

      这是 @SpringBootApplication

      的 API 文档

      https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html

      【讨论】:

      • 欢迎......请点击绿色右侧标记将其作为答案接受,以标记为任何有相同问题的人的已回答问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2012-03-10
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2018-01-28
      • 2015-12-22
      相关资源
      最近更新 更多