728x90
반응형
Spring Annotation
- 어노테이션은 자바 1.5부터 지원한다.
- 스프링은 어노테이션을 이용하여 빈과 관련된 정보를 설정할 수 있다.
Spring framework에서 annotation을 사용하려면 다음과 같은 설정들을 필요로 한다.(요즘은 주로 3,4번)
1. CommonAnnotationBeanPostProcessor 클래스를 설정파일에 bean객체로 등
<bean class="org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor"/>
2. <context:annotation-config/>태그를 이용한다.
@Anowired, @Required, @Resource, @PostConstructor, @PreDestroy 등의 annotation을 자동처리해주는 bean post processor
3. <context:component-scan base-package=""/>태그를 이용한다.
@Component, @Controller, @Service, @Repository등의 annotation을 자동처리
4. <mvc:annotation-driven/>
@RequestMapping, @Vaild 등 spring mvc component들을 자동처리
HandlerMapping, HandleAdapter 등을 등록하여 @Controller에 요청연결.
* 해당 설정이 없어도 component-scan이 있으면 mvc-application 동작 가능.
Spring (WEB) mvc framework는 java 1.5부터 annotation을 제공하며, annotation의 사용으로 설정파일을 간결화하고, view 페이지와 객체 또는 메서드의 맵핑을 명확하게 할 수 있다.
- 4개의 stereotype annotaion (component-scan에 의해 자동등록)
@Component: stereotype annotation의 조상
@Controller: Spring MVC에서 Controller로 인식
@Service: 역할 부여 없이 스캔 대상이 됨. Business Class(Biz)에 사용
@Repository: Exception을 DataAccessException으로 변환, Dao에 사용
1. @Component
패키지: org.springframework.stereotype
버전: spring 2.5
- 클래스에 선언하며 해당 클래스를 자동으로 bean 등록
- 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를 사용하면 동일한 타입의 빈 중 특정 빈을 사용하도록 하여 문제를 해결할 수 있다.
@Autowired
@Qualifier("test")
@private Test test; // byType -> byName
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
패키지: java.annotation.Resource
버전: java 1.6 & jee5
- 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용 name 속성에 자동으로 연결될 빈 객체의 이름을 입력한다.
@Resource(name="testDao") //byName -> byTypez
728x90
반응형
'Web > Spring' 카테고리의 다른 글
[Spring]MVC_상대경로, @RequestParam, @ModelAttribute, Void (0) | 2020.10.29 |
---|---|
[Spring]MVC기초설명 (0) | 2020.10.29 |
[Spring]AOP_관점지향 프로그래밍 (0) | 2020.10.27 |
[Spring]Autowire (0) | 2020.10.23 |
[Spring]MessageSourceAware (0) | 2020.10.23 |