전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-4) - context-transaction.xml
전자정부프레임워크는 context-transaction.xml 파일에서 트렌젝션에 대한 처리를 하도록 설정되어 있습니다.
여기서는 AOP를 사용하여 서비스임플에서 발생하는 이벤트에 대한 트랜잭션 처리를 합니다.
그럼 소스를 보도록 하죠.
src/main/resources/egovfaramework/spring/ 에 있는 context-transaction.xml 파일을 열어어 봅니다.
Namespaces탭을 눌러 어 떤 Namespace가 사용되는지 확인합니다.
앞서 말한데로 aop가 사용되었고, beans와 tx namespace가 사용된 것을 확인 할 수 있습니다.
소스탭으로 돌아와보면, 이에 대한 선언이 가장 처음 나오게 됩니다.
다음 부분은 실제로 트랜젝션 처리를 해줄 클래스 파일을 bean 등록 하는 부분입니다.
Spring에서는 Hibernate, JDBC,. JTA, JPA등 다양한 트랜젝션 API를 지원합니다.
그중에 jdbc를 사용한다는 것을 확인 할 수 있습니다.
txManager라는 id로 등록된 DataSourceTransactionManager 클래스에서
context-datasource.xml 에 bean 등록된 dataSouce라는 id의 bean을 매개변수로 사용하겠다는 것입니다.
dataSouce에서 발생하는 트랜젝션에 대한 처리를 하겠다는 것이죠.
그럼 언제 이것을 사용할 것이냐.
이제 그것을 설정해 주는 부분이 다음에 나오게 됩니다.
<tx:advice> 태그를 사용하여 어드바이스를 정의하고,
이 어드바이스가 언제 실행될지 <aop:config> 태그를 사용하여 pointcut과 매핑합니다.
AOP에 대한 설명은 아래의 Link를 참고하도록 합니다.
Link : 전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-1) - context-aspect.xml
pointcut 으로 설정된 egovframework.example.sample..경로의 모든 Imple에서 Exception이 발생하면
위에 선언한 txManager를 사용하여 rollback을 하겠다는 선언입니다.
하지만 보통 트랜젝션 롤백 처리는 insert, update, delete 문에서 필요한 것이기 때문에 보통
어드바이스는 아래와 같이 사용합니다.
get으로 시작하는 메소드는 읽기전용,
insert, update, delete로 시작하는 메소드는 트랜젝션발생시 롤백처리.
propagation 속성의 설정값과 <tx:method>의 속성값은 아래를 참고.
[propagation 속성]
REQUIRED |
기본값, 트랜젝션이 필요하다는 것을 의미, 트랜젝션이 있다면 참여, 없다면 새로 생성 |
SUPPORTS |
트랜젝션이 있다면 참여, 없으면 없는데로 진행 |
MANADATORY |
트랜젝션이 있다면 참여, 없다면 예외발생 |
REQUIRES_NEW |
항상 새로운 트랜젝션 생성 |
NOT_SUPPORTED |
트랜젝션 사용안함. 이미 있다면 보류 |
NEVER |
트랜젝션 사용 안함 |
NESTED |
중첩 트랜젝션 생성. 기존에 트랜젝션 내에 다시 트랜젝션 생성. 기존의 트랜젝션은 후에 생성된 트랜젝션에 영향을 주지만, 후에 생성된 트랜젝션은 기존 트랜젝션에 영향을 주지 않음. |
[<tx:method>속성]
name |
트랜젝션이 적용된 메소드명 |
propagation |
트랜젝션 전파규칙 설정 |
isolation |
트랜젝션 격리 레벨 설정 |
read-only |
읽기전용 설정 |
no-rollback-for |
트랜젝션을 롤백하지 않을 예외타입설정 |
rollback-for |
트랜젝션을 롤백할 예외타입설정 |
timeout |
트랜젝션 타임아웃 시간 설정(초) |
'Programing > egovFramework' 카테고리의 다른 글
log4j2 로그 파일 만들기, 특정데이터 로그 남기기 (0) | 2017.10.17 |
---|---|
전자정부프레임워크 iBatis, MyBatis 설정 방식 차이, 비교 (1) | 2017.08.29 |
전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-3) - context-datasource.xml (0) | 2017.01.25 |
전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-2) - context-common.xml (2) | 2017.01.25 |
전자정부프레임워크 나만의 웹 템플릿 프로젝트 생성하기(4-1) - context-aspect.xml (0) | 2017.01.24 |
댓글