기존 UserDetails 의 loadUserByUsername 메서드에서 에러 코드를 한곳에서 관리하는 ErrorCode 의 통일성을 위해 CustomeException 을 사용하였으나 이 부분에서 예외 타입 정합성에 대한 문제를 인지하였습니다.
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return userRepository.findByUsername(username)
.map(UserDetailsImpl::build)
.orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND));
}
loadUserByUsername에서 UsernameNotFoundException 대신 커스텀 예외를 던지면 Spring Security의 표준 흐름과 어긋날 수 있기에
.orElseThrow(() -> new UsernameNotFoundException("User not found: " + username));
와 같이 수정하였습니다.