- 마주하게 된 문제
- 최근 프로젝트를 다시 시작하게 swagger 에 대한 설정을 하게 되었고, 적용이 안되는 문제를 만나게 되었고 빠르게 해결하게 되었다.
- 원인
- 우리가 @Configuration 과 @Bean 을 통해 어노테이션을 부여해 두었지만, 스프링 빈에 등록이 되어있지 않아 발생하게 된 문제이다.
- 해결 방법
@ComponentScan
이 적용되는 Scan 범위를 알고 있으면 바로 해결 할 수 있는 문제이다.@ComponentScan
이 포함된 패키지와 그 하위 패키지를 스캔 대상으로 지정합니다.@SpringBootApplication
에@ComponentScan
을 포함하고 있으므로 적용하고자 하는 설정을@SpringBootApplication
어노테이션이 있는 것보다 하위패키지에 설정하면된다.- 아니면
@ComponentScan
에 어노테이션을 설정하면된다.
- 추가 설명
@ComponentScan
어노테이션은 Spring 프레임워크에서 스프링 빈을 자동으로 검색하고 등록하기 위한 설정의 일부이다.- 우리가 자연스럽게 사용하는 어노테이션 중 하나인,
@Configuration
어노테이션이 붙은 클래스에 함께 적용되며, 해당 클래스가 선언된 패키지와 그 하위 패키지에서@Component
,@Service
,@Repository
,@Controller
등이 붙은 클래스들 을 스캔새허 스프링 애플리케이션 컨텍스트 빈에 등록된다.
아래에 있는 @Configuration
안에 @Component 어노테이션이 있고 @ComponentScan의 대상이된다.
@Configuration
// @Configuration 에는 @Component 어노테이션이 있고 @ComponentScan 대상이 된다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
- 하지만, 위와 같이 단순히 어노테이션을 설정해 둔다고해서 스프링 빈에 등록 되는 것은 아니다. 위에 해결 방법에 설명해 두었지만 설정하고자 하는 Config의 위치를 잘 설정해야한다.
반응형
'프로젝트 기록 > spring' 카테고리의 다른 글
[Spring Project] Util 메서드는 Spring bean 으로 등록해야할까? (feat. static Method) (0) | 2025.03.23 |
---|---|
[Spring] AOP 를 활용한 횡단 관심사 구현 (0) | 2024.02.29 |