티스토리 뷰


  1   어노테이션 기반 설정 - 1 . @Required



@Required 어노테이션은 필수 프로퍼티를 명시 할때 사용된다. 필수 프로퍼티를 지정하려면 먼저 프로퍼티 설정 메서드에 @Requierd 어노테이션을 붙여야한다.



 위 코드에서 @Required 어노테이션을 추가해도, 스프링은 해당 프로퍼티를 필수 프로퍼티로 인식하지 않는다. 스프링 설정파일에 @Required를 인식하고 필수프로퍼티로 지정할 수 있는 클래스를 빈 객체로 등록해야 비로서 스프링이 @Required 어노테이션을 알맞게 처리할 수 있게 된다.



 RequiredAnnotationBeanPostProcessor 클래스는 스프링 컨테이너에 등록된 빈 객체를 조사하여 @Required 어노테이션이 적용된 프로퍼티의 값이 설정되어있는지 여부를 검사한다. 만약 @Required 어노테이션이 적용된 프로퍼티가 값이 설정되어 있지 않다면 예외를 발생한다.



 RequiredAnnotationBeanPostProcessor 클래스를 빈으로 등록하지 않고 @Required 어노테이션을 인식하기 위하여 위와 같은 <context:annotation-config> 설정을 추가하여도 동일한 처리를 할 수 있게 하며 위의 설정의 추가로 어노테이션 관련하여 다음의 BeanPostProcessor를 함께 등록하여 어노테이션을 인식하게 된다.




  2   <context:annotation-config>태그로 등록되는 BeanPostProcessor



  1. RequiredAnnotationBeanPostProcessor : @Required 어노테이션 처리
  2. AutowiredAnnotationBeanPostProcessor : @Autowired 어노테이션 처리
  3. CommonAnnotationBeanPostProcessor : @Resource, @PostConstruct,@PreDestroy 어노테이션 처리
  4. ConfigurationClassBeanPostProcessor : @Configuration 어노테이션 처리


위의 어노테이션을 같이 처리해주기 때문에 <context:annotation-config>를 사용하면 설정파일은 단순하게 만들수 있다.

댓글