我是Spring的新手,想在spring boot应用程序中使用以下项目结构。
*
**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实体并创建实体?
答案 0 :(得分:1)
您不需要使用 @ComponentScan 。 根据文件
@SpringBootApplication注释等同于使用 @Configuration,@ EnableAutoConfiguration和@ComponentScan与他们的 默认属性
所以你可以在主类上使用 @SpringBootApplication ,它位于包层次结构的基础包中,你会没事的。
您也可以参考此链接了解如何构建代码和主类位置
http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-structuring-your-code.html
这是 @SpringBootApplication
的API文档答案 1 :(得分:0)
EnableJpaRepositories
注释接受一个字符串数组basePackages
,您可以在这里添加实体所在的所有包:
@EnableJpaRepositories(basePackages={"com.demo.order"
,"com.demo.customer"
,"com.demo.config"})
这一定就够了。希望这会有所帮助。