본문 바로가기

Room 102. Back-end/Spring

[실전 개발자를 위한 Spring Framework ] 강의 - 트랜잭션과 로깅

20강 트랜잭션과 로깅

  • 목차
    • 내용
      • 스프링 선언적 트랜잭션 종류
      • 스프링 로깅 방식
    • 학습 목표
      • 스프링에서의 트랜잭션을 처리하는 방식을 이해하고 구현
      • 스프링에서의 로깅 방식과 SLF4J 와 LogBack 을 이용하여 로깅을 구현
  • 스프링 트랜잭션
    • 선언적 트랜잭션 (3가지있음) - 스프링은 선언적 트랜잭션 방식을 사용
      • 어노테이션을 이용한 선언적 방식
      • AOP를 이용한 선언적 방식
    • 프로그램에 의한 트랜잭션 처리 (권장되지 않음)
    • 스프링에서 트랜잭션 처리 모범사례
      • 선언적 방식에 의한 트랜잭션 처리
      • 트랜잭션은 주로 서비스 메소드를 대상으로 함
  • 어노테이션에 의한 트랜잭션
    • 트랜잭션이 필요한 클래스나 메소드에 @Transactional 어노테이션을 추가한다는 의미임.
    • @root-context.xml 에 Transaction Manager 를 설정
    • <tx:annotation-driven ../> 설정과 bean 추가.
      <bean id="transactionManager"
       class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
       <property name="dataSource" ref="dataSource" />
      </bean>
    • 주로 서비스 클래스에서 사용.
  • AOP를 이용한 트랜잭션 방법
    • 트랜잭션 매니저 설정
    • 트랜잭션 어드바이스 설정
    • AOP 설정

  • SLF4J / LogBack F4J / LogBack 을 이용한 로그 남기기
    • Java 진영에는 많은 로깅툴이 존재함.
      • commons-logging
      • log4j
      • java util logging
      • logback
    • 이전에는 log4j와 commons-logging이 주로 사용되었고,
      심지어 Spring도 commons-logging을 사용해 로그를 남기고 있음.
    • 하지만 SLF4J가 나온 이후 수많은 오픈소스 프로젝트가 SLF4J를 택하고 있음.
    • 여러 오픈소스 프로젝트를 사용하다 보면 Logging Tool이 혼재되어 충돌이 되는 경우가 빈번한데, 이를 경우 Logging Tool을 통일시켜 주어야 함.
    • 이 중 가장 최근에 나오고 가장 많이 사용되고 있는 SLF4J, Logback으로 통일되는 추세임.
  • SLF4J, LogBack Dependency 추가
    • 자바 내부에서 기본으로 사용하는 commons-logging 을 exclusion 해주어야 함.

  • LogBack 설정

  • LogBack Logger / Appender 추가
    • 콘솔과 파일에 대해 생성되는 로그를 설정 가능하며
    • root level 태그를 통해 로그가 출력되는 부분을 추가할 수 있습니다.
    • <logger> 와 <root> 의 level 의 통일

  • Logback Log의 패턴

  • Logback Log Level

  • Logback.xml 파일명 변경 및 적용