☆ 전체 소스 : spring305.zip
BoardVO.java
package sp.mvc.board.vo;
public class BoardVO { private int boardSeq; ......
|
BoardDaoImpl.java
package sp.mvc.board.dao; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
public class BoardDaoImpl extends SqlMapClientDaoSupport implements BoardDao {
@Override
@Override } |
BoardServiceImpl.java
package sp.mvc.board.service; import org.springframework.beans.factory.annotation.Autowired; import sp.mvc.board.dao.BoardDao;
@Component
@Autowired
@Override } |
BoardController.java
package sp.mvc.board.controller; import org.springframework.beans.factory.annotation.Autowired; import sp.mvc.board.service.BoardService;
@Controller boardVo1.setBoardType("001");
|
● boardVo2 : 정상적으로 insert가 되는 param값을 가지고 있음
boardVo1 : boaerSeq가 무결성 제약 조건에 위배되는 값을 가지고 있음
◆ 트랜잭션이 설정되어 있지 않다면 위의 경우 boardVo2는 정상적으로 insert가 되고(commit) boardVo1의 경우 Exception 발생 ==>> 하지만 트랜잭션을 설정함으로써 정상적으로 데이터가 들어가는 boardVo2의 경우도 boardVo1의 Exception으로 인해 rollback이 됨
LogAspect.java
package sp.mvc.aop; import org.aspectj.lang.JoinPoint;
@Aspect
@Pointcut(value="execution(* sp.mvc.board.controller.*.*(..))") |
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 2. ibatis 코딩을 지원해주는 SqlMapClient 빈 생성 -->
|
pjt_main_config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
|
● pointcut 즉, sp.mvc.board.controller.*.*(..)의 표현식에 해당되는 곳에 "txAdvice"가 적용 되고,
"txAdvice"의 method name은 "insertItem" 이므로
실제 적용되는 표현식은 sp.mvc.board.controller.*.insertItem(..) 이렇게 됨
board.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap
<!-- Mapper 파일 --> <!-- <sqlMap namespace="board"> <resultMap id="r_boardVo" class="sp.mvc.board.vo.BoardVO">
<insert id="insertBoard" parameterMap="p_in_boardVo"> |
결과
요청 URL http://localhost:8090/spring305/boardInsert.sp
===== 1 ===== |
'프로그램 > Spring 3.0' 카테고리의 다른 글
[예제-3] 선언적 트랜잭션 - rollbackFor, noRollbackFor 비교 (0) | 2012.05.29 |
---|---|
[예제-2] 선언적 트랜잭션 - @Transactional, AOP, @Aspect (0) | 2012.05.25 |
스프링의 트랜잭션 관리 - 선언적 트랜잭션(@Transactional) (1) | 2012.05.25 |
스프링의 트랜잭션 관리 - 선언적 트랜잭션(<tx:advice>) (0) | 2012.05.25 |
[예제] 게시판 상세보기 샘플소스(@Autowired, @Component, @Aspect 적용) (0) | 2012.05.24 |