AOP설정 했는데 트랜잭션 처리가 안되네요.
- 작성자 :
- 정*성
- 작성일 :
- 2011-07-01 11:23:42
- 조회수 :
- 2,889
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
* aop설정
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx"
expression="execution(* *..*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
* 구현소스
package tomorrow.adm.doc.service.impl;
@Service("admDocService")
public class AdmDocServiceImpl extends AbstractServiceImpl implements AdmDocService{
..........
public void insertGiho(GihoMasterVO vo) throws Exception {
String identifier = admDocDAO.selectIdentifier(vo);
vo.setIdentifier(identifier);
admDocDAO.insertGihoMaster(vo); // 정상
admDocDAO.insertGihoRelation(vo); // 에러 발생
}
.........
주석에 보시다 시피 에러가 발생하면 정상 처리 되는 곳 데이터가 insert가 안되야 하는데 insert되네요. 물론 에러발생한 곳은 insert가 안되구요.
답변에 미리 감사드립니다.
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx"
expression="execution(* *..*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
* 구현소스
package tomorrow.adm.doc.service.impl;
@Service("admDocService")
public class AdmDocServiceImpl extends AbstractServiceImpl implements AdmDocService{
..........
public void insertGiho(GihoMasterVO vo) throws Exception {
String identifier = admDocDAO.selectIdentifier(vo);
vo.setIdentifier(identifier);
admDocDAO.insertGihoMaster(vo); // 정상
admDocDAO.insertGihoRelation(vo); // 에러 발생
}
.........
주석에 보시다 시피 에러가 발생하면 정상 처리 되는 곳 데이터가 insert가 안되야 하는데 insert되네요. 물론 에러발생한 곳은 insert가 안되구요.
답변에 미리 감사드립니다.
A
안녕하세요.. 정재성님..
우선.. 설정 자체 및 사용에는 문제가 없는 것 같습니다.
이 경우는 일단.. aop 설정 xml이 contextConfigLocation 상에 지정이 되어 있는지 확인해 보십시오.
또다른 방법으로는 오류 발생 시 Exception 부분에 AOP 및 TransactionManager 부분이 포함되어 있는지 확인해 보시면 되실 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
우선.. 설정 자체 및 사용에는 문제가 없는 것 같습니다.
이 경우는 일단.. aop 설정 xml이 contextConfigLocation 상에 지정이 되어 있는지 확인해 보십시오.
또다른 방법으로는 오류 발생 시 Exception 부분에 AOP 및 TransactionManager 부분이 포함되어 있는지 확인해 보시면 되실 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.