여전히 트랜잭션을 담당하는 기술적인 코드가 UserService 안에 자리잡고 있다.

DI 적용을 이용한 트랜잭션 분리

UserService 는 UserServiceTest 가 클라이언트가 되어 사용하고 있다.

직접 사용이 문제? 간접적으로 사용하자.

image.png

  1. UserService 를 인터페이스로 만든다.
  2. 기존 코드는 UserService 인터페이스의 구현 클래스를 만들어 넣도록 하자.

문제 상황