티스토리 뷰
Spring Annotation
- 자바 1.5부터 지원한다.
- 스프링은 어노테이션을 이용하여 빈과 관련된 정보를 설정할 수 있다.
Spring Framework 에서 어노테이션 사용하기
다음과 같은 설정들을 필요로 한다.
1. CommonAnnotationBeanPostProcessor 클래스를 설정파일에 bean 객체로 등록하여 annotation 적용
<bean class="org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor">
2. <context:annotation-config> 태그를 이용
@Autowired, @Required, @Resource, @PostConstructor, @PreDestroy 등의 annotation을 자동 처리해주는 bean post processor
3. <context:component-scan base-package=""> 태그를 이용
@Componenet, @Controller, @Service, @Repository 등의 annotation을 자동 처리
4. <mvc:annotation-driven> 태그를 이용
@RequestMapping, @Valid 등 spring mvc component 등을 자동 처리
HandlerMapping, HandlerAdapter를 등록하여 @Controller에 요청 연결
해당 설정이 없어도 component-scan이 있으면 mvc appliaction이 동작한다.
Spring Web MVC Framework 에서 어노테이션 사용하기
설정파일을 간결화하고, view 페이지와 객체 또는 메소드의 맵핑을 명확하게 할 수 있다.
4개의 stereotype annotation (component-scan에 의해 자동으로 등록)
@Component : stereotype annotation의 조상
@Controller : Spring MVC에서 컨트롤러로 인식
@Service : 역할 부여 없이 스캔 대상이 됨. 비즈니스 클래스(Biz)에 사용
@Repository : 일반적으로 dao에 사용되며, Exception을 DatatAccessException으로 변환
1. @Component
패키지 : org.springframework.stereotype
버전 : spring 2.5
클래스에 선언하여 해당 클래스를 자동으로 bean 등록
범위는 디폴트로 singleton이며 @Scope을 이용해 지정할 수 있다.
2. @Autowired
패키지 : org.springframework.beans.factory.annotation
버전 : spring 2.5
Autowired annotation은 spring에서 의존관계를 자동으로 설정할 때 사용한다.
이 어노테이션은 생성자, 필드, 메소드 세 곳에 적용이 가능하며 타입을 이용한 프로퍼티 자동 설정 기능을 제공한다.
즉, 해당 타입의 빈 객체가 없거나 2개 이상일 경우 예외를 발생시킨다.
프로퍼티 설정 메소드(setter) 형식이 아닌 일반 메소드에도 적용이 가능하고 프로퍼티 설정이 필수가 아닐 경우 @Autowired(required=false)로 선언한다. (기본값 : true)
byType으로 의존관계를 자동으로 설정할 경우 같은 타입의 빈이 2개 이상 존재하게 되면 예외가 발생하는데, Autowired도 같은 문제가 발생한다. 이럴 때 @Qualifier를 사용하면 동일한 타입의 빈 중 특정 빈을 사용하도록 하여 문제를 해결할 수 있다.
ex)
@Autowired
@Qualifier("test")
private Test test;
3. @Qualifier
패키지 : org.springframework.beans.factory.annotation
버전 : spring 2.5
@Autowired annotation이 타입 기반이기 때문에 2개 이상의 동일 타입 빈 객체가 존재할 시 특정 빈을 사용하도록 선언한다.
@Qualifier("beanName")의 형태로 @Autowired와 같이 사용하며 메소드에서 두 개 이상의 파라미터를 사용할 경우에는 파라미터 앞에 선언해야 한다.
4. @Required
패키지 : org.springframework.beans.factory.annotation
버전 : spring 2.0
필수 프로토타입을 명시하는 것으로, 프로퍼티 설정 메소드(setter)에 붙이면 된다.
필수 프로퍼티를 설정하지 않을 경우 빈 생성 시 예외를 발생시킨다.
5. @Repository
패키지 : org.springframework.stereotype
버전 : spring 2.0
dao에 사용되며 Exception을 DataAccessException으로 변환한다.
6. @Service
패키지 : org.springframework.stereotype
버전 : spring 2.0
@Service를 적용한 class는 비즈니스 로직(Biz)으로 등록된다.
7. @Resource
패키지 : javax.annotation.Resource
버전 : java 1.6 & jee5
애플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용한다.
name 속성에 자동으로 연결할 빈 객체의 이름을 연결한다.
@Resource(name="testDao")
'Spring > 이론' 카테고리의 다른 글
[Spring] 스프링 AOP ( Aspect Oriented Programming ) (0) | 2020.03.24 |
---|---|
[Spring] 스프링 빈 설정파일 ( Spring Bean Configuration File ) - applicationContext.xml 예제 (0) | 2020.03.18 |
[Spring] 스프링 시작하기 ( Eclipse Marketplace 설치 ) (0) | 2020.03.18 |
[Spring] 스프링 프레임워크 ( Spring Framework ) 의 개념과 특징 (0) | 2020.03.16 |