본문 바로가기

Spring/토비의 스프링 3.1

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


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

수직, 수평 계층구조와 의존관계

  1. 수평적 분리
    • UserDao와 UserService의 분리
    • 각각 담당하는 코드의 기능적인 관심에 따라 분리
    • 서로 불필요한 영향을 주지 않으며 독자적으로 확장이 가능
    • 같은 애플리케이션 로직을 담은 코드지만 내용에 따라 분리
  2. 수직적 분리
    • 트랜잭션 추상화
    • 비지니스 로직과 로우레벨의 트랜잭션 기술이라는 아예 다른 계층의 특성을 갖는 코드

사용자 관리 모듈의 의존관계

  1. 애플리케이션 계층 : UserService, UserDao
    • 애플리케이션의 로직
    • 인터페이스와 DI를 통해 결합도를 낮춤
  2. UserDao는 DB 연결을 생성하는 방법에 대해 독립적
    • DataSource 인터페이스와 DI를 통해 추상화된 방식으로 로우레벨의 DB 연결 기술을 사용
  3. UserService는 트랜잭션 기술에 독립적
    • PlatformTransactionManager 인터페이스를 통한 추상화 계층을 사이에 둠

결합도가 낮으며, 서로 영향을 주지 않고 자유롭게 확장될 수 있는 구조

단일 책임 원칙

단일 책임 원칙(Single Responsibility Principle)
하나의 모듈은 한 가지 책임을 가져야 한다.
즉, 하나의 모듈이 바뀌는 이유는 한 가지여야 한다.

단일 책임 원칙의 장점

어떤 변경이 필요할 때 수정 대상이 명확해진다.

  • 객체 지향 설계와 프로그래밍의 원칙을 서로 긴밀하게 관련이 있다.

지금까지의 과정을 보면 단 한 번도 DI가 빠진 적이 없었다.

  • DI는 모든 스프링 기술의 기반이 되는 핵심 엔진이자 원리이며, 가장 중요한 도구이다.


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

5.5 정리  (0) 2019.02.07
5.4 메일 서비스 추상화  (0) 2019.02.07
5.2 트랜잭션 서비스 추상화  (0) 2019.02.06
5.1 사용자 레벨 관리 기능 추가  (0) 2019.02.06
5장. 서비스 추상화  (0) 2019.02.06