티스토리 뷰
[ 개요 ]
Spring 2.0 부터 XML을 이용한 맵핑 이외에 추가적으로 Java Annotation을 이용한 맵핑이 가능해졌다. 이를 이용하면 좀 더 쉬운 객체 맵핑이 가능해진다.
여기에서는 Spring 2.1 버젼의 명세로 구현해 보겠다.
( 기본적으로 Java 5.0 이상의 환경이 요구되며 그 외에 추가적인 기능을 위해서는 Java 6.0이상이 요구되는 구문도 존재하지만, 여기에서는 다루지 않겠다. )
기본적으로 Annotation을 이용한 맵핑 역시 XML을 이용한 맵핑과 동일한 구조를 가진다.
단, 직접적인 "<Bean id=" 등등의 구문 대신, 직접 POJO에 Annotation으로 기술되며, 이들을 Context에서 일정 규칙에 따라 읽어들이는 방식을 취한다.
[ 요구되는 라이브러리 ]
나중에 추가적으로 기술하겠다.
여기서 spring 을 위한 기본적인 XML 구문을 준비해 보자.
[web.xml 에 추가될 Spring 리스너 ]
<!-- Spring 리스너 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
[web.xml 에 추가될 Spring Context 설정화일 맵핑 ]
<!-- Spring 콘텍스트 맵핑 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext*.xml
</param-value>
</context-param>
[기본 applicationContext.xml 화일 작성 :: /WEB-INF/ 에 생성 ]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.1.xsd">
<context:annotation-config/>
<!-- 이 부분에 내용이 들어간다 -->
</beans>
이제 실제 Bean 구성을 해보자. 이번에 사용된 Bean은 2개로써 간단한 BoardDao와 이를 이용해 비지니스 로직을 구성할 BoardService 2가지를 사용한다. 패키지는 tobiz 아래 모두 넣는다.
[ BoardService.java ]
package tobiz;
import java.util.List;
public class BoardService {
// DI로 넣을 DAO property
private BoardDao boardDao;
// Getter
public BoardDao getBoardDao() {
return boardDao;
}
// Setter
public void setBoardDao(BoardDao boardDao) {
this.boardDao = boardDao;
}
// DAO를 이용하는 비지니스 로직
public List getList() {
return boardDao.getList();
}
}
:: 단순히 BoardDao를 위한 Property와 그를 이용한 비지니스 로직(getList) 만 존재한다. BoardDao를 위한 new 구문은 존재하지 않는다. 이는 Spring 컨테이너의 DI를 이용해 얻어온다.
[ BoardDao.java ]
package tobiz;
import java.util.ArrayList;
import java.util.List;
public class BoardDao {
private List objList = null;
// CRUD 메서드
public List getList() {
objList = new ArrayList();
objList.add("!!!!!");
objList.add("?????");
return objList;
}
}
:: Dummy CRUD 작업을 수행하는 BoardDao다. 단순한 문자열 2개를 저장하는 ArrayList 를 반환한다.
만일 기존의 XML 맵핑 방식이라면, 아까 작성한 applicationContext.xml의 <bean> 태그 사이에
<bean id="BoardService" class="tobiz.BoardService>
<property name="boardDao" ref="BoardDao" />
</bean>
이런식의 XML맵핑이 들어간다. 하지만, Annotation을 이용한다면, 이러한 XML 맵핑은 최소한의 맵핑 규칙만 들어가고, 실제적인 맵핑은 POJO객체내에 직접 기술된다. Annotation 처리된 Bean을 보자.
[ Annotation-mapped BoardService.java ]
package tobiz;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
// 맵핑될 객체 컴포넌트 지정 ( "맵핑 이름" )
@Component("BoardService")
public class BoardService {
// 연관 객체 자동 검색 맵핑 지정
@Autowired
private BoardDao boardDao;
public BoardDao getBoardDao() {
return boardDao;
}
public void setBoardDao(BoardDao boardDao) {
this.boardDao = boardDao;
}
public List getList() {
return boardDao.getList();
}
}
[ Annotation-mapped BoardDao.java ]
package tobiz;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
// 맵핑 참초 대상 객체 지정
@Repository
public class BoardDao {
private List objList = null;
public List getList() {
objList = new ArrayList();
objList.add("!!!!!");
objList.add("?????");
return objList;
}
}
[ applicationContext.xml 추가 ]
// tobiz 패키지에 존재하는 모든 컴포넌트를 맵핑
<context:component-scan base-package="tobiz" />
이런 간단한 Annotation작업만으로 Spring 객체 맵핑이 완료된다. 이 외에 좀더 복잡한 옵션이 존재하는데 이는 차차 다루겠다.
'프로그래밍' 카테고리의 다른 글
[JAVA] static, final (0) | 2016.12.24 |
---|---|
[ETC] MSSQL - Sql Server Management Studio 단축키 (0) | 2016.12.24 |
[ETC] Windows 7 무선네트워크 "식별되지 않은 네트워크" (0) | 2016.12.24 |
[ETC] JSTL (0) | 2016.12.24 |
[JAVA] JAXBContext로 xml을 오브젝트로, 오브젝트를 xml로 변환하기 (0) | 2016.12.24 |
- Total
- Today
- Yesterday
- 빈트후크
- Cusco
- Cambodia
- 마추피추
- 남미 저가항공
- calama
- 빅토리아폴스
- Oracle
- 남미
- 후마리
- 캄보디아
- 족발
- 킹덤 호텔
- 나미비아
- 아구아스 칼리엔테스
- Uyuni
- 우유니
- jQuery
- 토레스 델 파이네
- aguas calientes
- Namibia
- 쿠스코
- 푸에르토 나탈레스
- 애드센스
- 햄버거
- 성계 투어
- 볼리비아
- 칠레
- 칼라마
- 성스러운 계곡
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |