빈으로 등록할 클래스를 코드를 통해 명시적으로 작성하거나 설정 파일을 별도로 만드는 대신해서 사용하는 방법
애너테이션을 통해 클래스 레이블을 붙이면 SpringContainer에 있는 Component Scanner가 @Component 애너테이션이 붙은 모든 클래스를 찾아 빈으로 등록해줌
@Component
@Controller
@RequestMapping("/hello")
@Component
public class HelloController {
...
}
@Component
public class SimpleHelloService implements HelloService {
...
}
@ComponentScan
@ComponentScan이 붙어있으면 이 클래스가 있는 패키지부터 하위 패키지까지 뒤져서 @Component가 붙은 모든 클래스를 빈으로 등록
빈으로 등록할 때 필요한 경우 의존 오브젝트를 찾아 생성자를 호출할 때 파라미터로 넘겨주기도 함
@Configuration
@ComponentScan // 여러가지 정보에 컨테이너를 구성하는 데 필요한 hint들을 넣을 수 있음
public class HellobootApplication {
public static void main(String[] args) {
...
}
}
편리하기 때문에 Component Scane을 많이 사용하지만 빈으로 등록되는 클래스가 많아지게 되면 애플리케이션이 실행되었을 때 정확히 어떤 것들이 등록되어있는지 찾아보려면 굉장히 번거로울 수 있음
그러나 표준처럼 사용되고 있음!
어떤 클래스가 빈으로 등록되는가는 패키지 구성을 잘하고 모듈을 잘 나누어서 개발하면 어렵지 않게 파악이 가능하여 단점이 크게 부각되지 않음 ⇒ @ComponentScan 적극 사용 추천