AOP 트랜잭션

트랜잭션 방법:
1) AOP (선언적 트랜잭션
2) 프로그램에 의한 트랜잭션


AOP 를 이용한 선언적 트랜잭션 방식

context-datasource.xml

ex)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    ">

<bean id="jdbcProp" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>

<!-- 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
-->
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
 <constructor-arg ref="dataSourceSpied" />
 <property name="logFormatter">
  <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
   <property name="loggingType" value="MULTI_LINE" />
   <property name="sqlPrefix" value="SQL:::" />
  </bean>
 </property>
 </bean>

<!-- Transaction Manager -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="dataSource" />
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
   <tx:method name="get*" read-only="true" />
   <tx:method name="delete*" />
</tx:attributes>
</tx:advice>

<aop:config>
   <aop:pointcut id="transactionPointcut" expression="execution(* com.spring.bbs.dao.BbsDao.*(..))"/>
   <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" />
</aop:config> 

<bean id="bbsDao" class="com.spring.bbs.dao.BbsDao"/>


</beans>



<tx:method> 속성

name: 
propagation:
isolation:
timeout:
read-only:
rollback-for:
no-rollback-for:

http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction:declarative_transaction_management

http://dev.anyframejava.org/docs/anyframe/plugin/foundation/4.6.1/reference/html/ch08.html

Aspectj 표현식 예제
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:fdl:aop:aspectj



댓글

이 블로그의 인기 게시물

spring boot as a windows service

Properties

PHP Date format