7. 서비스 추상화
1. 서비스란 무엇인가?
스프링에 대한 오해
스프링 애플리케이션 빈이 존재하는 계층 구조

서비스(개발쪽에서, 특히 백엔드) 에 대한 통용되는 개념
서비스는 클라이언트에게 서비스를 제공해주는 오프젝트나 모듈

서비스는 일반적으로 상태를 가지지 않는다.

서비스의 종류
2. 애플리케이션 서비스 도입
애플리케이션 서비스

기존의 DataClient 안에 있던 비지니스 로직에 서비스 레이어를 추가하자.
DataClient 안에 있던 비지니스 로직에 서비스 레이어를 추가하자. 3. 기술에 독립적인 애플리케이션 서비스
OrderService 의 문제점
Order 의 문제점
Order 에서 JPA 메타데이터 분리
resources/META-INF/orm.xml
Order 내 JPA 어노테이션을 제거하자.
Order 내 JPA 어노테이션을 제거하자. 4. OrderRepository DIP
특정 기술(JPA) 에 의존하지 않는 애플리케이션 서비스 만들기

코드 수정
테스트 추가
5. 트랜잭션 서비스 추상화
OrderService
Transaction 은 데이터 기술에 따라 방법이 다르다.
JPA 트랜잭션 예시
JDBC 트랜잭션
추상화

코드 수정
6. JDBC 데이터 엑세스 기술
JdbcClient
DataSourceTransactionManager
JDBC 데이터 엑시스용 구성 정보
코드 수정
7. 트랜젝션 테스트
OrderService 에서 기술 관련 코드 제거
트랜잭션 테스트
트랜잭션 추가
8. 트랜잭션 프록시
데코레이터 패턴

프록시 패턴

트랜잭션 프록시

코드 수정
9. @Transactional 과 AOP
트랜잭션 프록시 적용

스프링이 만들어주는 트랜잭션 프록시
코드 수정
스프링의 프록시 AOP (Aspect Oriented Programming)
Last updated