Backend/Spring
트랜잭션 처리
leecom116
2022. 11. 26. 16:49
<!-- 트랜잭션관리자 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 트랜잭션과 관련된 작업(트랜잭션시작, 커밋, 롤백등) -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
<!-- 선언적 방법으로 트랜잭션 처리 : XML 또는 @Transactional 애노테이션으로 트랜잭션 처리 -->
<!-- 트랜잭션을 위한 Advice 설정 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" rollback-for="Exception"/>
<tx:method name="update*" rollback-for="Exception"/>
<tx:method name="delete*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<!-- AOP 적용 -->
<aop:config proxy-target-class="true">
<aop:pointcut expression="execution(public * com.sp.app..*Service.*(..))"
id="serviceOperation"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"
id="transactionAdvisor"/>
</aop:config>