UserService 를 담당하는 클래스에 트랜젝션 처리 코드가 있어 깔끔하지 못하다.
UserService 를 DI 위해 인터페이스 타입으로 전환.
트랜젝션 코드는 UserSerivce 를 구현한 클래스로 이동.
트랜젝션 코드가 있는 클래스에서 UserService 를 구현한 다른 구현 클래스에게 실행을 위힘하는 코드 추가.

위 변경에 따른 테스트 코드 추가 수정.
Merge remote-tracking branch 'origin/master'