스프링 부트 어노테이션 정리
어노테이션이란?
주석이라는 사전적 의미를 가지고있으며 , 자바 코드에 주석처럼 사용하여 컴파일 또는 런타임에서 해석된다.
스프링 부트 어노테이션
자바코드로 XML 설정 시 사용되는 어노테이션들
@SpringBootApplication
많은 Spring Boot 개발자들은 항상 그들의 메인 클래스에 @Configuration, @EnableAutoConfiguration 그리고 @ComponetScan을 어노테이트한다. 이 어노테이션들은 자주 함께 사용된다. Spring Boot는 편의를 위해 @SpringBootApplication을 제공한다. @SpringBootApplication 어노테이션은 @Configuration, @EnableAutoConfiguration 그리고 @ComponentScan을 디폴트 속성으로 함께 사용하는 것과 같다.
스프링 어노테이션
@Configuration, @Component
@Configuration은 설정을 위한 어노테이션으로 개발자가 생성한 class를 Bean으로 생성 할 때 Single Tone으로 한번만 생성하고
@Component는 Bean을 생성 할 때 java에서 new로 생성하듯이 생성한다.
@ComponentScan
지정한 위치 이하에 있는 @Component와 @Configuration이 붙은 class를 스캔해서 Bean으로 등록한다.
스프링 XML 설정의 <context:component-scan>을 대신해서 자바에 설정
@EnableAutoConfiguration
스프링 어플리케이션 컨텍스트(Application Context)를 만들 때 자동으로 설정 하는 기능을 켠다. 사용자가 필요할 것 같은 빈(bean)을 추측해서 ApplicationContext를 만들 때 필요한 설정을 한다. 클래스패스(classpath)를 기준으로 설정을 한다. 예를들어 클래스패스에 tomcat-embeded.jar이 있으면 TomcatEmbeddedServletContainerFactory가 있을 것이라고 추측 해서 설정을 해준다.
[출처] @SpringBootApplication|작성자 헬리코
@Component에 속한 @Repository,@Service,@Controller
1. @Component 어노테이션은 자바 클래스를 스프링 빈이라고 표시하는 역할을 한다. 이 어노테이션을 사용함으로써 스프링의 component-scanning 기술이 이 클래스를 어플리케이션 컨텍스트에 빈으로 등록하게 된다.
2. @Repository 어노테이션은 DAO에 특화된 어노테이션이다. @Component 어노테이션을 써도 상관없지만, DAO 클래스들에 @Repository 어노테이션을 사용함으로써 @Component 어노테션이 가진 특성과 함께, DAO의 메소드에서 발생할 수 있는 unchecked exception들을 스프링의 DataAccessException으로 처리할 수 있는 장점 또한 갖을 수 있다.
3. @Service 어노테이션은 서비스 레이어 클래스들에 사용되어지는 어노테이션이다. 역시나 @Component 어노테이션을 사용해도 상관없다. @Service 어노테이션을 사용함으로써 해당 클래스가 서비스 레이어 클래스라는 것을 명확하게 할 수 있다. 현재는 @Repository 어노테이션 처럼 추가적인 behavior는 없지만, 추후에 추가될 예정이다.
4. @Controller 어노테이션은 MVC 패턴에서 Controller 클래스에 선언되어진다. 이 또한 @Component 로 대체할 수 있다. 하지만, @Controller 어노테이션을 사용함으로써 @RequestMapping 등의 추가적인 어노테이션을 사용할 수 있게 된다.
실제 프로젝트에서 @Component가 필요한 비슷한 상황들을 직면하곤 한다. 하지만, 대부분의 상황에서 우리는 @Repository, @Service, @Controller 어노테이션을 사용하는게 좋다. @Component 어노테이션은 Controller, Service, Dao 세가지 카테고리 이외의 클래스에만 사용해야 한다.
http://zgundam.tistory.com/26 - database configuration xml 과 자바에서 설정
http://sime.tistory.com/100 - component가 xml로 빈을 등록 시키는 과정