티스토리 뷰

프로그래밍

[JAVA] Spring Annotation 설정

ReturnToHome 2016. 12. 24. 21:50

[ 개요 ]


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/ 에 생성 ]





이제 실제 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="BoardDao" class="tobiz.BoardDao" />
<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 객체 맵핑이 완료된다. 이 외에 좀더 복잡한 옵션이 존재하는데 이는 차차 다루겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함