코드 개선

  • 여러 로직이 한곳에 섞여있지는 않은지
  • 각 오브젝트와 메소드가 각각 자기 몫의 책임을 맡아 일을 하는 구조인지?
  • 매직 넘버가 있는지?

트랜잭션 서비스 추상화

  • DB 트랜잭션은 Connection 단위로 처리
    • 비즈니스 로직에서 Connection을 다뤄야 함
    • 코드 더러워짐
  • → 독립적인 트랜잭션 동기화 방식
    • TransactionSynchronizatoins 저장소는 작업 스레드마다 독립적으로 Connection 오브젝트를 저장하고 관리
    • But! Only jdbc, 기술과 환경에 종속되버림
  • → 트랜잭션 추상화 계층구조
    • 추상 인터페이스 PlatformTransactionManager
    • 확장가능

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

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

기술과 서비스에 대한 추상화 기법을 이용하면 특정 기술환경에 종속되지 않는 포터블한 코드를 만들 수 있다.

결합도가 낮으며, 서로 영향을 주지 않고 자유롭게 확장될 수 있는 구조를 만들 수 있는데는 DI가 중요한 역할을 하고있음

단일 책임 원칙

적절한 분리가 가져오는 특징은 단일 책임 원칙(SRP)으로 설명할 수 있다.

단일 책임 원칙은 하나의 모듈은 한 가지 책임을 가져야 한다는 의미

장점

  • 어떤 변경이 필요할 때 수정 대상이 명확해짐

테스트 대역

테스트 대상이 사용하는 의존 오브젝트를 대처할 수 있도록 만든 오브젝트

목 오브젝트(mock object)

테스트 대상의 간접적인 출력 결과를 검증하고, 테스트 대상 오브젝트와 의존 오브젝트 사이에서 일어나는 일을 점증할 수 있도록 특별히 설계된 오브젝트

Ref.

이일민, “토비의 스프링 3.1”, 에이콘 출판사(2012)