我是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实体并创建实体?
3条答案
按热度按时间vbkedwbf1#
EnableJpaRepositories
注解接受一个字符串数组basePackages
,您可以在这里添加实体所在的所有包:够了吧。希望能帮上忙。
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
pxyaymoc3#
在我们的应用程序中,我们自定义
LocalContainerEntityManagerFactoryBean
,所以必须设置软件包扫描那里,例如: