1. component-scan

- spring 2.5 버전에 출시

- 2.5 버전 이전엔 xml file 에 모든 bean 을 설정해야 했는데, component-scan 이 xml 내의 bean 설정 양을 줄여줬다

- @Component, @Repository, @Service, @Controller 어노테이션을 스캔한다

- @Autowired, @Qualifier 어노테이션도 해석

- component-scan 이 선언되어있다면 annotation-config 는 필요없음

 

2.annotation-driven

- annotation-driven 은 spring mvc 컴포넌트를 활성화

- annotation-driven 을 포함하지 않아도 component-scan을 사용하여 Bean을 생성한 경우 mvc application은 동작

- annotation-driven은 구성되지 않은 특정 빈을 구성하는데 추가 작업을 수행

- @Controller 에 요청을 하기 위해 필요한 HandlerMapping, HandlerAdapter 을 등록

- @Number로 숫자 필드 지원 , classPath에 Jackson이 있는 경우 JSON 쓰기 읽기를 지원 와 같은 작업 적용

 

3. annotation-config

- 어플리케이션 context에 이미 등록되어 있는 (xml에 선언돼있거나 package scanning 으로 검색된) 어노테이션 빈을 활성화

- 스프링 컨텍스트에 의해 생성 및 저장된 빈에 대해 @Autowired, @Qualifier 어노테이션을 해석

- component-scan 또한 같은 일을 하지만, annotation-config 는 빈을 찾아 등록해주진 않는다. 이미 등록이 끝난 bean 들을 활성화할 할 뿐이다.

 

※ annotation-config 만 설정에 잡혀있을 경우, Bean 이 스캔에 의해 자동으로 등록되지 않으므로 xml 에 Bean 설정을 해주어야 함. 현재 개발중인 배치서버 설정에 빈이 자동으로 잡히지 않아 찾아보니 annotation-config 설정만 잡혀있고, component-scan 혹은 annotation-driven 은 잡혀있지 않았음.

 

참고 및 해석 : https://javabeat.net/spring-mvc-component-scan-annotations/ 

반응형

+ Recent posts