MSA 환경에서 Redis Bean을 찾지 못하는 이슈 해결

자라나는 ㅇㅅㅇ개발자·2024년 10월 10일
0

트러블슈팅

목록 보기
5/9

문제 상황

order-service에서 분산 락을 사용하기 위해 redis를 scan하려했지만 bean을 찾을 수 없는 문제

RedissonConfig에 @Component 어노테이션이 붙어있지만 찾지 못하고 있다.

1차 시도

RedissonConfig에 @ComponentScan(basePackages = "com.fortickets") 어노테이션을 붙여봤지만 찾지 못한다.

2차 시도

redis 경로에 @ComponentScan이 포함되어있는 @SpringBootApplication 실행 Class를 생성한다.

이렇게 하니까 Bean을 찾아와진다…

웃긴건 여기서 RedissonConfig 클래스의 @ComponentScan(basePackages = "com.fortickets") 어노테이션만 지우면 또 못찾음

왜이러지?!

3차 시도

BookingService 클래스가 속해있는 order-service의 실행 클래스에 @ComponentScan(basePackages = "com.fortickets.redis") 어노테이션을 추가한다.

이렇게 하면 RedisApplication 실행 클래스와 RedissonConfig에 ComponentScan이 없어도 된다.

알고보니 지금 프로젝트 경로가 order-service와 redis가 떨어져있기 때문에 order-service의 scan 범위 안에 redis가 포함되어있지 않아 order-service에서 scan 범위를 redis가 포함되도록 지정해주어 해결한 것이었다.


다시 확인해보니 각 서비스별로 ComponentScan을 관리하는 클래스가 있었고,
거기에 redis 경로를 추가해 위에 했던 작업들은 필요가 없었다;;ㅎㅋ

@Configuration
@ComponentScan(basePackages = {
        "com.fortickets.exception",
        "com.fortickets.jpa",
        "com.fortickets.security",
        "com.fortickets.redis"
})
public class ComponentConfig {

}

역시 팀원들과의 소통이 중요!

0개의 댓글