개발/스프링

스프링 트랜잭션 설정 @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: 트랜잭션 조언을 포인트컷과 연결합니다.

기능:

  1. 거래 관리자 설정:
    • Bean을 생성하고 DataSourceTransactionManager이를 데이터 소스와 연결합니다 egov.dataSource.
  2. 거래 조언 정의:
    • txAdvice다음과 같은 기본 트랜잭션 동작으로 생성됩니다 .
      • 모든 메소드( name="*")는 트랜잭션 내에서 실행됩니다.
      • 메소드에 기존 트랜잭션이 없으면 새 트랜잭션이 생성됩니다( propagation="REQUIRED").
      • 모든 예외는 롤백( rollback-for="Exception")을 트리거합니다.
  3. 주석 기반 트랜잭션 관리:
    • 선언적 트랜잭션 관리를 위해 주석을 사용할 수 있습니다 @Transactional.
  4. AOP 구성:
    • egovframework.*.*.service.impl.*Impl특정 패키지( 및 ) 내의 메소드와 일치하는 포인트컷을 정의합니다 egovframework.rte.fdl.excel.impl.*Impl.
    • 해당 메서드에 적용하여 txAdvice트랜잭션 내에서 실행되도록 합니다.

전반적으로 이 구성은 지정된 패키지 내에서 Spring Bean에 대한 강력한 트랜잭션 관리 시스템을 설정하여 데이터베이스 작업 중 데이터 무결성과 일관성을 보장