SpringBoot 구성 요소다중 모듈 프로젝트 스캔 문제
나는 나의 app-core와 나의 app-web 모듈로 나의 부모님 pom 타입 maven 프로젝트가 있습니다. 나의 app-core 모듈은 나의 app-web에 대한 의존성으로 추가되었습니다.
내 앱-코어 모듈의 모든 클래스는 루트 패키지 com.myapp.core에 있고 내 앱-웹 모듈의 모든 클래스는 루트 패키지 com.myapp에 있습니다.거미줄
메인 Application.java도 com.myapp에 있습니다.웹 패키지코어 모듈 루트 패키지가 다르므로 ComponentScan용 공통 기본 패키지 "com.myapp"을 다음과 같이 포함합니다.
@Configuration
@ComponentScan(basePackages="com.myapp")
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
이제 놀라운 것은 제가 Run As -> Spring Boot App을 사용하여 이 앱을 실행하면 잘 작동한다는 것입니다.그러나 Run As -> Java Application으로 실행하면 앱 코어 모듈에 정의된 빈을 찾을 수 없다는 오류와 함께 실패합니다.
내가 움직이면,Application.java
로.com.myapp
패키지는 잘 작동하고 있습니다.제가 자바 애플리케이션으로도 실행해도 되는 거죠?
봄에 대한 디버그 로그 수준을 활성화하고 광범위한 로그를 검토한 후 JPA 저장소, JPA 엔티티 등과 같은 다양한 구성 요소에 대한 검색이 애플리케이션에 따라 다르다는 것을 알게 되었습니다.Java의 패키지 이름입니다.
JPA 리포지토리 또는 엔티티가 다음의 하위 패키지에 없는 경우Application.java
의 패키지를 다음과 같이 명시적으로 지정해야 합니다.
@Configuration
@ComponentScan(basePackages="com.sivalabs.jcart")
@EnableAutoConfiguration
@EnableJpaRepositories(basePackages="com.sivalabs.jcart")
@EntityScan(basePackages="com.sivalabs.jcart")
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
위의 추가 사항 포함@EnableJpaRepositories
,@EntityScan
다른 이름으로 실행 -> Java Application을 사용하여 실행할 수 있습니다.
하지만 여전히 Run As -> Spring Boot App에서 어떻게 작동하는지 잘 모르겠습니다!!
어쨌든 나는 내 것을 옮기는 것이 더 낫다고 생각합니다.Application.java
로.com.myapp
SpringBoot과 싸우는 것보다 패키지!
저도 같은 문제가 있어요.@EnableJpaResposities 주석을 추가해야만 이 문제를 해결할 수 있습니다.@SpringBootApplication에서 basePackages를 정의하려고 했지만 실패했습니다.Application 클래스의 패키지가 JpaResposities의 검색 프로세스에 제공되지만 @SpringBootApplication에 정의된 다른 패키지는 무시됩니다.스프링 부트의 버그/개선 사항으로 보입니다.
Redis 저장소에서도 비슷한 문제가 발생하여 다음과 같은 문제가 해결되었습니다.
@Configuration
@EnableConfigurationProperties({RedisProperties.class})
@RequiredArgsConstructor
@EnableRedisRepositories(basePackages = {"com.example.another"})
public class RedisConfig {
private final RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisTemplate<?, ?> redisTemplate() {
RedisTemplate<byte[], byte[]> template = new RedisTemplate<byte[], byte[]>();
template.setConnectionFactory(redisConnectionFactory);
template.afterPropertiesSet();
return template;
}
}
언급URL : https://stackoverflow.com/questions/30587377/springboot-componentscan-issue-with-multi-module-project
'itsource' 카테고리의 다른 글
원두형의 원두. 원두형. 원두형. 원두형. 원두형. 원두형.ServerCodecConfigurer'를 찾을 수 없습니다. (0) | 2023.07.21 |
---|---|
AutoConfigureMockMvc 주석에서 secure=false를 무시하는 Spring Boot 통합 테스트에서 401을 얻습니다. (0) | 2023.07.21 |
두 데이터 프레임을 비교하고 차이점 파악 (0) | 2023.07.21 |
행 제한 절을 사용하여 Oracle 쿼리에서 열 복제 (0) | 2023.07.21 |
IPython 노트북에서 코드가 실행되는지 확인하려면 어떻게 해야 합니까? (0) | 2023.07.21 |