티스토리 뷰

728x90

어노테이션이란?

주석이라는 사전적 의미를 가지고있으며 , 자바 코드에 주석처럼 사용하여 컴파일 또는 런타임에서 해석된다.



스프링 부트 어노테이션


자바코드로 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로 빈을 등록 시키는 과정

반응형

'▶ Spring' 카테고리의 다른 글

Spring Security 스프링 시큐리티?  (1) 2019.04.28
스프링 mvc 패턴  (0) 2019.04.07
스프링프레임워크란  (0) 2018.04.27
Lombok 어노테이션 정리  (0) 2018.04.15
JPA 어노테이션 정리  (0) 2018.04.15
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함