Dev/Spring

[ Spring ] component-scan / annotation-config / annotation-driven

surimi🍥 2021. 2. 24. 17:34
반응형

<context:annotation-config/>

이미 등록된 bean에 대해서만 Annotation을 활성화한다.

어딘가에 bean을 등록해놓으면 @Autowired와 @Qualifier Annotation을 해석해서 가져다 쓰겠다는 의미이다.

@Autowired와 @Qualifier 두 가지만 해결한다.

따라서 위 태그를 사용하더라도 xml에 bean을 반드시 선언해야 한다.


<context:component-scan/>

<context:component-scan base-package="com.board.controller"/>

설정한 패키지의 하위경로에 있는 class들을 스캔해 Bean 인스턴스를 생성한다.

 

bean의 등록 여부와 관계없이 스프링이 알아서 bean 스캔을 통해 Annotation을 해석하고 활성화한다.

@Autowired와 @Qualifier 뿐만 아니라 @Service, @Component, @Controller, @Repository 등 모든 클래스를 스캔하고

bean을 작성한다.

따라서 <context:component-scan>를 선언했다면 위의 <context:annotation-config>는 선언할 필요가 없다.


<mvc:annotation-driven/>

<mvc:annotation-driven/>

mvc:annotation-driven 스프링 MVC 컴포넌트들을 dafault 설정으로 활성화 하기위해 

사용된다. 만약 xml파일에 context:component-scan가 있다면 mvc:annotation-driven를 입력하지 않아도 MVC 어플리케이션은 작동할것이다. 그러나  mvc:annotation-driven 은 특별한 일들을 하는데 이 태그는 당신의 @Controllers 에게 요청을 전파하기위해  요구되는  HandlerMapping 와  HandlerAdapter 를 등록한다.  게다가 , 클래스패스상에 존재하는것에 기반한 아래와 같은 어떤 디폴트 작업을 적용한다.  

 

  • Using the Spring 3 Type ConversionService as a simpler and more robust alternative to JavaBeans PropertyEditors
  • Support for formatting Number fields with @NumberFormat
  • Support for formatting Date, Calendar, and Joda Time fields with @DateTimeFormat, if Joda Time is on the classpath
  • Support for validating @Controller inputs with @Valid, if a JSR-303 Provider is on the classpath
  • Support for reading and writing XML, if JAXB is on the classpath
  • Support for reading and writing JSON, if Jackson is on the classpath

 

출처:

triest.tistory.com/42

hamait.tistory.com/322

 

반응형