개발/스프링
스프링 트랜잭션 설정 @Transactional context-transaction.xml
깉니
2023. 12. 26. 17:42
@Transactional 애노테이션만 service단에서 붙이면 된다고 생각했는데,
공통으로 설정하는 곳을 찾음
-> context-transaction.xml
주요 구성 요소:
- 네임스페이스:
- beans: Bean을 정의하기 위한 Core Spring 구성 네임스페이스입니다.
- aop: AOP(관점 지향 프로그래밍) 구성을 위한 네임스페이스입니다.
- tx: 트랜잭션 관리 구성을 위한 네임스페이스입니다.
- 콩 정의:
- txManager: DataSourceTransactionManagerJDBC 데이터 소스와 관련된 트랜잭션을 관리하는 Bean입니다.
- txAdvice: 메소드에 대한 트랜잭션 속성을 정의하는 트랜잭션 조언 빈입니다.
- 주석:
- tx:annotation-driven: 주석 기반 트랜잭션 관리를 활성화하여 주석을 사용할 수 있도록 합니다 @Transactional.
- AOP 구성:
- aop:config: AOP 측면을 구성합니다.
- aop:pointcut: 트랜잭션 조언을 적용할 메소드를 식별하는 포인트컷 표현식을 정의합니다.
- aop:advisor: 트랜잭션 조언을 포인트컷과 연결합니다.
기능:
- 거래 관리자 설정:
- Bean을 생성하고 DataSourceTransactionManager이를 데이터 소스와 연결합니다 egov.dataSource.
- 거래 조언 정의:
- txAdvice다음과 같은 기본 트랜잭션 동작으로 생성됩니다 .
- 모든 메소드( name="*")는 트랜잭션 내에서 실행됩니다.
- 메소드에 기존 트랜잭션이 없으면 새 트랜잭션이 생성됩니다( propagation="REQUIRED").
- 모든 예외는 롤백( rollback-for="Exception")을 트리거합니다.
- txAdvice다음과 같은 기본 트랜잭션 동작으로 생성됩니다 .
- 주석 기반 트랜잭션 관리:
- 선언적 트랜잭션 관리를 위해 주석을 사용할 수 있습니다 @Transactional.
- AOP 구성:
- egovframework.*.*.service.impl.*Impl특정 패키지( 및 ) 내의 메소드와 일치하는 포인트컷을 정의합니다 egovframework.rte.fdl.excel.impl.*Impl.
- 해당 메서드에 적용하여 txAdvice트랜잭션 내에서 실행되도록 합니다.
전반적으로 이 구성은 지정된 패키지 내에서 Spring Bean에 대한 강력한 트랜잭션 관리 시스템을 설정하여 데이터베이스 작업 중 데이터 무결성과 일관성을 보장