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>