- 스프링 선언적 트랜잭션 종류
- 스프링 로깅 방식
- 스프링에서의 트랜잭션을 처리하는 방식을 이해하고 구현한다.
- 스프링에서의 로깅 방식과 SLF4J와 LogBack을 이용하여 로깅을 구현한다.
- 선언적 트랜잭션 - 스프링은 선언적 트랜잭션 방식을 사용
- 어노테이션을 이용한 선언적 방식
- AOP를 이용한 선언적 방식
- 프로그램에 의한 트랜잭션 처리 (권장되지 않음)
- 스프링에서 트랜잭션 처리 모범사례
- 선언적 방식에 의한 트랜잭션 처리
- 트랜잭션은 주로 서비스 메소드를 대상으로 함
트랜잭션 구현 방법은 3가지가 있습니다. 1) 어노테이션 사용, 2) AOP 사용, 3) 프로그램 코드에 트랜잭션 처리 입니다.
3) 방식은 권장되지 않지만 상황에 따라 필요한 경우는 있습니다.
전체 애플리케이션에서 이 세 가지 방식을 적절히 섞어서 구현하시면 됩니다.
스프링에서는 주로 선언적으로 트랜잭션 처리를 하며, 서비스 Layer 메소드들을 대상으로 합니다.
- @root-context.xml에 Transaction Manager Bean을 설정
- < tx:annotation-driven ../> 설정
- 트랜잭션이 필요한 클래스나 메소드에 @Transactional 어노테이션 추가
- 주로 서비스 클래스의 메소드에 적용
어노테이션에 의한 트랜잭션을 사용하려면 1)root-context.xml에 Transaction Manager Bean을 등록하고, 2) < tx:annotation-driven ../>을 설정해야 합니다.
그 후, 3) 트랜잭션 처리가 필요한 메소드들에 @Transactional 어노테이션을 붙여주면 됩니다.
- 트랜잭션 매니저 설정
<!-- 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 설정
<aop:config> <aop:pointcut id="transactionPointcut" expression="execution(* kr.co.acompp.hello.service.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" /> </aop:config>
AOP를 사용한 트랜잭션 처리 방법의 경우, 메소드마다 어노테이션을 붙여줄 필요없이, 위처럼 세 번의 설정 등록만 해주면 됩니다.
트랜잭션 설명이 끝났습니다.
이제 로그에 대한 설명입니다.
- commns-logging
- log4j
- java util logging
- logback
<exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions>
- 위 코드 pom.xml 코어 spring dependency 태그 안에 추가
- slf4j, jcl-over-slf4j, logback-classic dependency 추가
logback.xml 생성 후, 설정