Spring
Spring Annotation
snail voyager
2019. 7. 14. 13:20
728x90
반응형
https://gmlwjd9405.github.io/2018/12/02/spring-annotation-types.html
[Spring] Spring Annotation의 종류와 그 역할 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
Bean 설정 관리
Spring에서는 아래와 같이 Layer별로 구분된 Annotation을 사용할 것을 권장하고 있습니다.
- @Controller
- 프리젠테이션 레이어를 구성하는 Controller 클래스를 정의하는데 사용하며, Spring MVC 기반인 경우에 한해 활용 가능하다.
- @Service
- 비즈니스 로직을 처리하는 클래스를 정의하는데 사용한다.
- @Repository
- DB 처리를 위해 DAO영역 혹은 퍼시스턴스 영역을 정의하는데 사용한다.
Dependency Injection 처리
특정 Bean의 기능 수행을 위해 다른 Bean을 참조해야 하는 경우 사용하는 Annotation으로는 @Autowired, @Resource 그리고 @Inject이 존재합니다.
- @Autowired
- Spring Framework에서 지원하는 Dependency 정의 용도의 Annotation으로, Spring Framework에 종속적이긴 하지만 정밀한 Dependency Injection이 필요한 경우에 유용하다.
- 멤버변수, setter 메소드, 생성자, 일반 메소드에 적용 가능
- @Resource
- JSR-250 표준 Annotation으로 Spring Framework 2.5.* 부터 지원하는 Annotation이다. JSR-250에서는 JNDI 리소스만 인젝션할 수 있었지만, 스프링 2.5에서는 스프링을 통해 관리되는 모든 빈을 인젝션할 수 있다. Annotation 사용으로 인해 특정 Framework에 종속적인 어플리케이션을 구성하지 않기 위해서는 @Resource를 사용할 것을 권장한다. 이를 사용하기 위해서는 클래스 패스 내에 jsr250-api.jar 가 추가되어야 한다.
- @Resource는 Bean name을 지정하여 Dependency Injection을 하고자 하는 경우에 사용한다. @Resource는 name이라는 속성을 가지고 있어서, Spring Container가 @Resource로 정의된 요소에 injection하기 위한 Bean을 검색할 때, name 속성에 지정한 이름을 검색할 Bean Name으로 가능하다.
- @Inject
- JSR-330 표준 Annotation으로 Spring 3 부터 지원하는 Annotation이다. 특정 Framework에 종속되지 않은 어플리케이션을 구성하기 위해서는 @Inject를 사용할 것을 권장한다. @Inject를 사용하기 위해서는 클래스 패스 내에 JSR-330 라이브러리인 javax.inject-x.x.x.jar 파일이 추가되어야 한다.
- 멤버변수, setter 메소드, 생성자, 일반 메소드에 적용 가능합니다.
- @Qualifier
- type-driven injection의 경우 Spring Container가 해당 Bean을 찾을 때 객체의 type을 기준으로 검색을 수행하게 된다. 이와 같은 경우 동일한 type의 Bean이 여러 개 검색되었을 때 injection 대상이 되는 Bean을 결정하기 위한 세밀한 제어가 필요하며 이 때 @Qualifier를 사용할 수 있다.
728x90
반응형