[Annotation(@) 이용해서 트랜잭션 등록하기]

aop 적용을 위해서 작성 했던 부분의 코드 (빨간색표시)는 Annotation(@)을 이용 할 경우 필요 없는 코드이다.

<tx:annotation-driven> 태그를 이용해서 트랜잭션을 어노테이션을 이용해서 사용하겠다 라는 선언 및 등록해놓은 transactionManager bean을 등록해줌.

트랜잭션을 하고자 하는 메서드 혹은 클래스에 @Transactional 작성
순서 정리 : XML
1 2 3 4 |
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> |
cs |
1. transaction을 처리해주는 객체 bean 등록 : transactionManager
1 2 3 4 5 6 |
<tx:advice transaction-manager="transactionManager" id="mytx"> <tx:attributes> <!-- 모든 메서드에 트랜잭션을 적용하겠다 라는 설정 --> <tx:method name="*"/> </tx:attributes> </tx:advice> |
cs |
2. transaction을 구현해 놓은 advice 등록 : <tx:advice>
2-1. advice에서 transactionManager를 사용한다.
1 2 3 4 5 |
<!-- 포인트 컷 지정 --> <aop:config> <aop:advisor advice-ref="mytx" pointcut="execution(public * service.*ServiceImp.*(..))" /> </aop:config> |
cs |
3. transaction advice pointcut(트랜잭션을 적용할 메서드 선언)
순서 정리 : Annotation(@)을 이용한 transaction 적용
1 |
<tx:annotation-driven transaction-manager="transactionManager"/> |
cs |
1. transaction을 Annotation(@Transactional)을 이용해서 적용할 것임을 선언 : transactionManager를 참조 시킨다.

2. Transaction을 적용할 메서드 또는 클래스 위에 @Transactional을 선언해준다.
[요청관련 문제 해결하기]

이런식으로 이미지를 띄우고 싶은데,

dispatcherServlcet이 모든 요청을 받고 있기 때문에 나타나는 오류

<mvc:resources>를 이용해서 해결 할 수 있음.