order-service에서 분산 락을 사용하기 위해 redis를 scan하려했지만 bean을 찾을 수 없는 문제
RedissonConfig에 @Component
어노테이션이 붙어있지만 찾지 못하고 있다.
RedissonConfig에 @ComponentScan(basePackages = "com.fortickets")
어노테이션을 붙여봤지만 찾지 못한다.
redis 경로에 @ComponentScan
이 포함되어있는 @SpringBootApplication
실행 Class를 생성한다.
이렇게 하니까 Bean을 찾아와진다…
웃긴건 여기서 RedissonConfig
클래스의 @ComponentScan(basePackages = "com.fortickets")
어노테이션만 지우면 또 못찾음
왜이러지?!
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 {
}
역시 팀원들과의 소통이 중요!