티스토리 뷰
포스팅에 앞서...
이 포스팅은 Spring Framework 를 이용한 Java 코드 위주의 설명입니다.
관련 코드는 아래 링크를 통해 깃허브에서 받아보실 수 있습니다.
https://github.com/ChoHyeonJunn/Workspace_Spring
Spring Annotation
- 어노테이션은 자바 1.5부터 지원한다.
- 스프링은 어노테이션을 이용하여 빈과 관련된 정보를 설정할 수 있다.
Spring Framework에서 annotation을 사용하려면 다음과 같은 설정들을 필요로 한다.
- CommonAnnoatationBeanPostProcessor 클래스를 설정파일에 bean 객체로 등록하여 annotation 적용
- <bean class="org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor"/>
- 태그를 이용
- @Autowired, @Required, @Resource, @PostConstructor, @PreDestroy 등의 annotation을 자동 처리해주는 bean post processor
- 태그를 이용
- @Component, @Controller, @Service, @Repository 등의 annotation을 자동 처리
- 태그를 이용
- @RequestMapping, @Valid 등 spring mvc component 들을 자동 처
- HandlerMapping, HandlerAdapter 를 등록하여 @Controller에 요청 연결.
- 해당 설정이 없어도 component-scan이 있으면 mvc application 이 동작한다.
Spring WEB MVC Framework는 java 1.5부터 annotation을 제공하며, annotation의 사용으로 설정파일을 간결화하고, view 페이지와 객체 또는 메서드의 매핑을 명확하게 할 수 있다.
- 4개의 stereotype annotation (component-scan에 의해 자동으로 등록)
- @Component : stereotype annotation의 조상
- @Controller : Spring MVC에서 컨트롤러로 인식
- @Service : 역할 부여 없이 스캔 대상이 됨. 비즈니스 클래스(Biz) 에 사용
- @Repository : 일반적으로 dao에 사용되며, Exception을 DataAccessException으로 변환
- @Component
- 패키지 : org.springframework.stereotype
- 버전 : spring 2.5
- 클래스에 선언하며 해당 클래스를 자동으로 bean 등록, bean의 이름은 해당 클래스명으로 선언된다. (첫 글자는 소문자)
- 범위는 디폴트로 singleton이며 @Scope를 이용해 지정할 수 있다.
- @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; @Qualifier
패키지 : org.springframework.beans.factory.annotation
버전 : spring 2.5
@Autowired annotation이 타입 기반이기 때문에 2개 이상의 동일타입 진 객체가 존재할 시 특정 빈을 사용하도록 선언한다.
@Qualifier("beanName") 의 형태로 @Autowired와 같이 사용하며 메서드에서 두 개 이상의 파라미터를 사용할 경우에는 파라미터 앞에 선언해야 한다.
4. @Required
패키지 : org.springframework.factory.annotation
버전 : spring 2.5
필수 프로퍼티임을 명시하는 것으로, 프로퍼티 설정 메서드 (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 속성에 자동으로 연결될 빈 객체의 이름을 입력한다.
@Source(name="testDao")
'JAVA > Spring' 카테고리의 다른 글
Spring13 - 게시판 + filter + aop + login + interceptor + transaction (0) | 2020.03.26 |
---|---|
Spring 03 - Spring Bean (Collection) (0) | 2020.03.18 |
Spring 02 - Spring Bean (0) | 2020.03.18 |
Spring 01 - 기본개념 / 기본환경설정 (0) | 2020.03.18 |
- Total
- Today
- Yesterday
- 캡슐화
- 객체
- jdbc
- select
- OOP
- controller
- Update
- INSERT
- JdbcTemplate
- JDBC 프로그램 작성단계
- view
- .
- java 환경설정
- Scott/Tiger
- 추상화
- MVC
- 다형성
- 상속
- Oracle
- 객체지향
- ojdbc6.jar
- model
- Delete
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |