不同包中的Spring Data 实体

chy5wohz  于 2023-01-09  发布在  Spring
关注(0)|答案(3)|浏览(129)

我是Spring的新手,想在Sping Boot 应用程序中使用以下项目结构。
1.每种类型的实体及其相应的存储库实现都有不同的包。
1.用于资料档案库配置的包

**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

客户配置.java

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

}

应用程序.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实体并创建实体?

vbkedwbf

vbkedwbf1#

EnableJpaRepositories注解接受一个字符串数组basePackages,您可以在这里添加实体所在的所有包:

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

够了吧。希望能帮上忙。

tp5buhyn

tp5buhyn2#

不需要使用**@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

pxyaymoc

pxyaymoc3#

在我们的应用程序中,我们自定义LocalContainerEntityManagerFactoryBean,所以必须设置软件包扫描那里,例如:

LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(dataSource);
        factory.setPackagesToScan("com.example.multitenancy.test.entity");

相关问题