본문 바로가기

Spring/토비의 스프링 3.1

5장. 서비스 추상화


개요

사용 방법과 형식은 다르지만 기능과 목적이 유사한 기술을 추상화하고, 일관된 방법으로 사용할 수 있도록 지원

목차

5.1 사용자 레벨 관리 기능 추가

5.1.1 필드 추가

  • Level 이늄
  • User 필드 추가
  • UserDaoTest 테스트 수정
  • UserDaoJdbc 수정

5.1.2 사용자 수정 기능 추가

  • 수정 기능 테스트 추가
  • UserDao와 UserDaoJdbc 수정
  • 수정 테스트 보완

5.1.3 UserService.upgradeLevels()

  • UserService 클래스와 빈 등록
  • UserServiceTest 테스트 클래스
  • upgradeLevels() 메소드
  • upgradeLevels() 테스트

5.1.4 UserService.add()

5.1.5 코드 개선

  • upgradeLevels() 메소드 코드의 문제점
  • upgradeLevels() 리팩토링
  • User 테스트
  • UserServiceTest 개선

5.2 트랜잭션 서비스 추상화

5.2.1 모 아니면 도

  • 테스트용 UserService 대역
  • 강제 예외 발생을 통한 테스트
  • 테스트 실패의 원인

5.2.2 트랙잭션 경계 설정

  • JDBC 트랜잭션의 트랜잭션 경계설정
  • UserService와 UserDao의 트랜잭션 문제
  • 비지니스 로직 내의 트랜잭션 경계설정
  • UserService 트랜잭션 경계설정의 문제점

5.2.3 트랜잭션 동기화

  • Connection 파라미터 제거
  • 트랜잭션 동기화 적용
  • 트랜잭션 테스트 보완
  • JdbcTemplate과 트랜잭션 동기화

5.2.4 트랜잭션 서비스 추상화

  • 기술과 환경에 종속되는 트랜잭션 경계설정 코드
  • 트랜잭션 API의 의존관계 문제와 해결책
  • 스프링의 트랜잭션 서비스 추상화
  • 트랜잭션 기술 설정의 분리

5.3 서비스 추상화와 단일 책임 원칙

5.3.1 서비스 추상화와 단일 책임 원칙

  • 수직, 수평 계층구조와 의존관계
  • 단일 책임 원칙
  • 단일 책임 원칙의 장점

5.4 메일 서비스 추상화

5.4.1 JavaMail을 이용한 메일 발송 기능

  • JavaMail 메일 발송

5.4.2 JavaMail이 포함괸 코드의 테스트

5.4.3 테스트를 위한 서비스 추상화

  • JavaMail을 이용한 테스트의 문제점
  • 메일 발송 기능 추상화
  • 테스트용 메일 발송 오브젝트
  • 테스트와 서비스 추상화

5.4.4 테스트 대역

  • 의존 오브젝트와 변경을 통한 테스트 방법
  • 테스트 대역의 종류와 특징
  • 목 오브젝트를 이용한 테스트

5.5 정리


' Spring > 토비의 스프링 3.1' 카테고리의 다른 글

5.2 트랜잭션 서비스 추상화  (0) 2019.02.06
5.1 사용자 레벨 관리 기능 추가  (0) 2019.02.06
4.3 정리  (0) 2019.01.25
4.1 사라진 SQLException  (0) 2019.01.25
4장. 예외  (0) 2019.01.25