Nim*_*ian 0 java spring spring-data-jpa spring-boot
我有一个由多个模块组成的maven项目.其中三个模块是
在启动时,我得到以下异常:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.foo.bar.data.OrderRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Run Code Online (Sandbox Code Playgroud)
我知道Spring Boot Applications默认只查看他们自己和他们的子包bean,但在这种情况下,bean是在兄弟包中.我已经尝试过@ComponentScan({"org.foo.bar.data"})在Application类中添加一个,但无济于事.
使用@EnableJpaRepositories(basePackages = {"org.foo.bar.data"})投掷
Caused by: java.lang.IllegalArgumentException: Not an managed type: class org.foo.bar.core.model.Order
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
目录树(修剪)如下所示:
project
??? project-core
? ??? src
? ??? main
? ??? java
? ??? org
? ??? foo
? ??? bar
? ??? core
| ??? model
| ??? Order.java
??? project-data
? ??? src
? ??? main
? ??? java
? ??? org
? ??? foo
? ??? bar
? ??? data
| ??? OrderRepository.java
?
??? project-spring
??? src
??? main
??? java
??? org
??? foo
??? bar
??? spring
??? Application.java
Run Code Online (Sandbox Code Playgroud)
OrderRepository:
public interface OrderRepository extends JpaRepository<Order, Integer> {
List<Order> findByDeliveryOverview(DeliveryOverview deliveryOverview);
List<Order> findByDeliveryOverviewAndCustomer(DeliveryOverview deliveryOverview, Customer customer);
}
Run Code Online (Sandbox Code Playgroud)
Application.java
@SpringBootApplication
@ComponentScan({"org.foo.bar.data"})
public class Application {
private static final Logger log = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
主要问题是你的结构.
要@EntityScan在应用程序类上扫描您需要的实体,并启用所需的存储库@EnableJpaRepositories.
@SpringBootApplication
@EntityScan({"org.foo.bar.core.model"})
@EnableJpaRepositories(basePackages = {"org.foo.bar.data"})
public class Application { ... }
Run Code Online (Sandbox Code Playgroud)
但是,我建议将Application课程移至org.foo.bar,然后你只需要@SpringBootApplication它,因为它将从该目录开始扫描.
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |