5.3.1 서비스 추상화와 단일 책임 원칙
수직, 수평 계층구조와 의존관계
- 수평적 분리
- UserDao와 UserService의 분리
- 각각 담당하는 코드의 기능적인 관심에 따라 분리
- 서로 불필요한 영향을 주지 않으며 독자적으로 확장이 가능
- 같은 애플리케이션 로직을 담은 코드지만 내용에 따라 분리
- 수직적 분리
- 트랜잭션 추상화
- 비지니스 로직과 로우레벨의 트랜잭션 기술이라는 아예 다른 계층의 특성을 갖는 코드
사용자 관리 모듈의 의존관계
- 애플리케이션 계층 : UserService, UserDao
- 애플리케이션의 로직
- 인터페이스와 DI를 통해 결합도를 낮춤
- UserDao는 DB 연결을 생성하는 방법에 대해 독립적
- DataSource 인터페이스와 DI를 통해 추상화된 방식으로 로우레벨의 DB 연결 기술을 사용
- 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 |