어떤 부분을 리팩터링하려 하나요?
리팩터링하려는 부분에 대해 간결하게 설명해주세요
AS-IS
현재는 컨트롤러에서 사용자를 SitUser 객체로 받고 있습니다.
이렇게 구현한 이유는,
- 스프링 시큐리티의 UserDetailService 에서 SitUser로 회원을 조회하고,
- 다시 서비스 코드에서 사용자를 findById로 조회하는
중복된 코드를 줄이기 위함이었습니다.
하지만 준영속 상태의 SitUser를 서비스 코드로 전달함으로써, 서비스 코드에서 영속성과 관련된 문제가 발생했습니다.
e.g. LazyLoading 이 동작하지 않음
TO-BE
- argument resolver를 수정하여 컨트롤러의 인자로 long SiteUserId를 받게 합니다.
- 서비스 코드에서 SiteUser를 직접 조회하여,
영속 상태인 SiteUser를 사용하도록 수정합니다.