스프링 프레임워크에서는 @ComponentScan 어노테이션을 사용하여 특정 패키지와 그 하위 패키지를 스캔하여 @Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스를 찾아 빈으로 등록할 수 있습니다. 이를 통해 스프링 빈 컨테이너가 해당 클래스들을 관리하게 되고, 의존성 주입(Dependency Injection)을 수행할 수 있습니다.
@ComponentScan이란?
@ComponentScan은 스프링 프레임워크의 어노테이션 중 하나로, 특정 패키지와 그 하위 패키지를 스캔하여 @Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스를 찾아 빈으로 등록하는 역할을 합니다. 기본적으로 @ComponentScan은 @Configuration이 붙은 설정 클래스와 함께 사용됩니다. 설정 클래스에서 @ComponentScan을 사용하면, 해당 클래스가 위치한 패키지를 기준으로 스캔이 수행됩니다. basePackages 속성을 사용하여 스캔할 패키지의 범위를 지정할 수도 있습니다.
@ComponentScan 예제
com.example.demo.MyComponent.java:
package com.example.demo;
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
public String sayHello() {
return "Hello, World!";
}
}
com.example.demo.config.AppConfig.java:
package com.example.demo.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "com.example.demo")
public class AppConfig {
}
위 예제에서, AppConfig 설정 클래스에 @ComponentScan 어노테이션이 붙어 있습니다. 이를 통해 com.example.demo 패키지와 그 하위 패키지를 스캔하여 MyComponent 클래스를 찾아 빈으로 등록하게 됩니다.
@ComponentScan을 사용하지 않는 경우, 스프링 부트 애플리케이션에서는 @SpringBootApplication 어노테이션에 내장된 @ComponentScan이 기본적으로 수행됩니다. 이때 스캔 범위는 @SpringBootApplication이 붙은 클래스가 위치한 패키지와 그 하위 패키지로 설정됩니다. 따라서 일반적인 스프링 부트 애플리케이션에서는 명시적으로 @ComponentScan을 사용할 필요가 없습니다.
'Spring' 카테고리의 다른 글
Spring Annotation 10. @Service (0) | 2023.04.19 |
---|---|
Spring Annotation 9. @Component (0) | 2023.04.19 |
Spring Annotation 7. @Transactional (0) | 2023.04.19 |
Spring Annotation 6. @Autowired (0) | 2023.04.19 |
Spring Annotation 5. @RequestParam (0) | 2023.04.19 |
댓글