[오라클자바커뮤니티 스프링교육강좌,스프링3트랜잭션강좌]트랜잭션 어드바이스를 통한 선언적인 방식의 트랜잭션
관리(XML설정방식),spring framework3.X transaction
Spring2.0 이상에서 tx 스키마에 정의된 <ta:advice> 엘리먼트에 의해 Transaction의 어드바이스를
쉽게 구현할 수 있다.
아래와 같이 XML 설정 파일에 spring-aop-3.0.xsd , spring-tx-3.X.xsd를 추가해야 한다.
<beans xmlns="http://www.springframework.org/schema/beans":namespace
prefix = o ns = "urn:schemas-microsoft-com:office:office" />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
Spring AOP가 포인트컷 정의를 위해 AspecJ 포인트컷 표현식을 사용하므로 AspectJ 위버 지원라이브러리를 클래스 패스에 추가해야 한다. 메이븐을 사용한다면 아래 의존 라이브러리를 pom.xml에 추가한다.
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
tx 네임스페이스에서 tx:advice가 가장 중요한데 사용예는 다음과 같다.
또한 스프링 AOP가 프록시 기반이므로 트랜잭션이 적용될 메소드는 public으로 선언되어야 한다.
<tx:advice id=“txAdvice”
transaction-manager=“transactionManager”>
<tx:attributes>
<tx:method name=“*dao” propagation=“REQUIRED”/>
<tx:method name=“*” propagation=“REQUIRED”read-only=“true”/>
</tx:attributes>
</tx:advice>
<bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=“dataSource” ref=“dataSource”/>
</bean>
<tx:attributes>
<tx:method name=“*dao” propagation=“REQUIRED”/>
<tx:method name=“*” propagation=“REQUIRED”read-only=“true”/>
</tx:attributes>
</tx:advice>
<bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
<property name=“dataSource” ref=“dataSource”/>
</bean>
tx:attribute에 사용되는 속성
name : 적용될 어드바이스에 대응되는 메소드명(필수), 와일드카드 (*)가능
isolation : 트랜잭션 격리 수준
no-rollback-for : 예외가 발생했을때 이를 무시하고 Transaction을 롤백하지 않고 계속 진행할 예외를 지정
propagation : Transaction 전파방식 지정, 기본값:REQUIRED
read-only : 트랜잭션이 읽기 전용인지, 기본값:FALSE
rollback-for : 예외가 발생했을 때 트랜잭션을 롤백 시킬 예외들의 구체적인 타입을 콤마로 구분하여 기술
timeout : 트랜잭션 타임아웃을 지정
isolation : 트랜잭션 격리 수준
no-rollback-for : 예외가 발생했을때 이를 무시하고 Transaction을 롤백하지 않고 계속 진행할 예외를 지정
propagation : Transaction 전파방식 지정, 기본값:REQUIRED
read-only : 트랜잭션이 읽기 전용인지, 기본값:FALSE
rollback-for : 예외가 발생했을 때 트랜잭션을 롤백 시킬 예외들의 구체적인 타입을 콤마로 구분하여 기술
timeout : 트랜잭션 타임아웃을 지정
<tx:advice> 자체만 보았을 때는 어느 빈에 advice가 적용되어야 하는지 알수 없다. 그러므로 PointCut이
필요하다.( AOP의 Advice에 지나지 않는다. )
<aop:config>
<aop:advisor pointcut=“execution(* *..SpringBoardDAO.*dao(..))”
advice-ref=“txAdvice”/>
</aop:config>
평일주간(9:30~18:20) 개강
(5/26)SQL초보에서실전전문가까지
(5/26)안드로이드개발자과정
(5/26)C#4.0,ADO.NET,Network 프로그래밍
(5/26)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(5/27)JAVA,ORACLE 실무개발자과정
(5/28)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정
(5/30)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(5/30)[기업100%환급]SQL기초에서 Schema Object까지
(6/09)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
평일야간(19:00~21:50) 개강
(5/22)안드로이드개발자과정
(5/22)C#,ASP.NET마스터
(5/23)SQL초보에서실전전문가까지
(5/26)웹퍼블리싱 마스터
(5/28)Spring3.X, MyBatis, Hibernate실무과정
(5/29)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(5/24)Spring3.X, MyBatis, Hibernate실무과정
(5/24)C#,ASP.NET마스터
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/24)안드로이드개발자과정
(5/24)SQL초보에서실전전문가까지
(5/24)실무예제로 배워보는 jQuery(개발자/디자이너를위한)
주말저녁(18:30~22:20) 개강
(5/24)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
댓글 없음:
댓글 쓰기