Closed jinyngg closed 1 year ago
@InjectMocks
가 안 됐었는데, 지금 보니까 자동주입과 모킹을 같이 쓰려고 @SpringBootTest
가 포함된 @DataJpaTest
를 써서 그랬던 것 같습니다. (내부적인 이유는 아직도 잘 모릅니다만.. ㅎㅎ). 자동주입이 필요한 테스트와 모킹을 이용한 테스트 클래스를 분할하는 게 나았으려나요?EmployeeServiceImpl -> updateEmployeeInfo global -> file -> EmployeeProfileImage, FileUploadConfig Querydsl - DayOffHistoryCustomRepositoryImpl
로그인 필터처리 로그인 필터 -> AuthenticationProvider를 Custom 하려 했으나 필터 처리 후 순환 참조 오류 발생 -> 필터 처리 + CustomAuthenticationProvider를 사용하려 한다면 어떻게 처리해야하는가.
안녕하세요 미니 프로젝트 진행하신다고 고생많으셨습니다.
전반적으로 고민한 흔적이 정말 많이 보이네요.
점차 성장하는 것이 느껴져 코드를 읽는 입장에서도 괜시리 뿌듯했습니다.
몇가지 코멘트를 남겨드렸으니 확인해주세요~
Optional을 활용해 커스텀 예외를 던지는 것👍
spring data jpa를 쓰고 있다면 우리가 편리하게 사용하는 메서드들이 어떤 메커니즘으로 동작하는지 공부해보면 좋을것 같아요
검증 조건이 많아진다면 별도의 클래스를 활용해 검증 자체를 해당 클래스로 책임을 위임하는 것도 하나의 방법입니다.
값 존재하는 지를 조회할 때는 count보다는 exist를 확인하는 것이 좋습니다
테스트 코드를 짤때는 원하는 테스트에 따라 각각 별도로 구현하는 것이 좋습니다(테스트 격리성)
BindingResultHandler와 같이 할 수도 있고 ExceptionHandler를 사용할 수도 있습니다.
null을 직접 반환하는 것보다는 적절한 값 또는 빈 값을 반환하는 것이 좋아요
단순조회이고 메서드 내에서 조회가 한번만 일어난다면 굳이 트랜젝션 애노테이션을 사용할 필요는 없습니다.
@Value를 생성자 주입으로 주입 받는 방법도 있으니 참고해보세요
querydsl은 확실히 동적쿼리 상황에서 유용하게 사용할 수 있는 라이브러리인 것은 맞습니다. 하지만 querydsl은 호환성 이슈가 많고 2021년 이후로 업데이트되지 않고 있어 점점 낙후되는 상황입니다.
말씀해주신 순환참조 이슈에 대해서는 발생할 가능성이 너무 광범위하기에 특정 답을 드릴 수가 없을 것 같습니다. 순환참조라면 일반적으로 컴포넌트 스캔이 되고 있는 범위를 잘 확인해보시길 바랍니다.
미니프로젝트 코드리뷰 요청드립니다.