다른 모듈의 스프링 부트 자동 배선
저는 제 프로젝트에서 3개 모듈 간의 연결을 시도하고 있습니다.@Autowired 오류와 함께 내 객체에 도달하려고 하면 표시됩니다.제 시나리오를 조금 설명하겠습니다.
모듈
이 모든 모듈은 pom.xml 내부에 연결되어 있습니다.저의 고민에 대해 이야기해 보겠습니다.
C -> ROUTE.JAVA
.
.
.
@Autowired
public CommuniticationRepository;
@Autowired
public Core core;
.
.
.
B -> CORE
public class Core {
private int id;
private String name;
private Date date;
public Core(int id, String name, Date date) {
this.id = id;
this.name = name;
this.date = date;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
오류
com.demo.xyz에 있는 필드 통신 리포지토리입니다.A.휴게기 컨트롤러.경로에 'com.demo.xyz' 유형의 빈이 필요합니다.A.'통신 리포지토리'를 찾을 수 없습니다.
작업:
'com.demo.xyz' 유형의 빈을 정의합니다.A. 구성에서 '통신 리포지토리'를 선택합니다.
A - > 저장소.JAVA
@Component
@Repository
public interface CommunicationRepository extends CrudRepository<Communication, Date> {
List<Communication> findByDate(Date date);
void countByDate(Date date);
}
제거해야 합니다.@Component
그리고.@Repository
부터CommunicationRepository
스프링 데이터 JPA 저장소인 경우.
모듈 A와 B에서 구성을 정의해야 합니다.
@Configuration
@EnableJpaRepositories(basePackages ={"com.demo.xyz.A"})
@EntityScan(basePackages = {"com.demo.xyz.A"})
@ComponentScan(basePackages = {"com.demo.xyz.A"})
public class ConfigA {
}
// If you have no spring managed beans in B this is not needed
// If Core should be a spring managed bean, add @Component on top of it
@Configuration
@ComponentScan(basePackages = {"com.demo.xyz.B"})
public class ConfigB {
}
그런 다음 애플리케이션을 부트스트랩하는 C에서 모듈 A와 모듈 B의 구성을 가져와야 합니다.이 시점에서 A와 B의 모든 콩은 C에서 자동 배선에 사용할 수 있습니다.
@Configuration
@Import(value = {ConfigA.class, ConfigB.class})
public class ConfigC {
}
기본적으로 속성 위에 @Autowired 주석을 사용하고 사용하려면 스프링 컨텍스트에 초기화된 빈이 있어야 합니다.그래서 여기서 여러분의 문제는 여러분의 봄 맥락에 있습니다. 자동 배선할 수 있는 그런 콩이 없습니다.그래서 해결책은 여러분이 봄의 배경 안에 콩을 가지고 있어야 한다는 것입니다. 이것을 완성하는 데는 여러 가지 방법이 있습니다.
봄 컨텍스트 내에서 @Component로 자동 초기화되는 콩이 필요한 클래스
예:
@Component
public class Car{
또는 수동으로 이러한 콩을 반환하는 구성 파일을 가질 수 있습니다.
예:
@Bean
public Car setCarBean(){
return new Car();
}
그리고 이 빈 반환은 @Configuration 클래스 안에 있어야 합니다.
그런 다음 이 작업을 완료한 것이 확실하다면 올바른 @ComponentScan이 작동해야 합니다.
편집
@SpringBootApplication
@ComponentScan(basePackages = { "com.demo.xyz.A", "com.demo.xyz.B"})
public class Application {
응용 프로그램 클래스에 scanBasePackages를 추가합니다.기본 검색은 응용 프로그램 클래스가 있는 패키지에 대한 것입니다.
@SpringBootApplication(scanBasePackages = "com.demo.xyz")
public class Application {...}
언급URL : https://stackoverflow.com/questions/52516360/spring-boot-autowiring-from-another-module
'programing' 카테고리의 다른 글
@RestControllerAdvision 대 @ControllerAdvision (0) | 2023.07.29 |
---|---|
이 PL/SQL에 문제가 있습니까? 변수 바인딩 *이(가) 선언되지 않았습니다. (0) | 2023.07.29 |
페이지 하단으로 바닥글 플러시, 트위터 부트스트랩 (0) | 2023.07.29 |
파이썬을 사용하는 이 코드에서 'wb'는 무엇을 의미합니까? (0) | 2023.07.29 |
기존 도커 컨테이너에 포트 매핑을 할당하려면 어떻게 해야 합니까? (0) | 2023.07.29 |