반응형
💬 코드 리팩토링

해당하는 로직을 동적쿼리로 바꿔줌으로써 하나의 메소드로 간편하게 바꿀수 있었다. 계속 정적 쿼리문을 사용했다면 무수한 if ~ else 문을 만날수 있기 때문에 동적 쿼리를 사용하였다.
마지막으로 이전에 쓰던 메소드들은 이제 사용하지 않는 메소드이기 때문에 삭제 처리하였다.
💥 트러블 슈팅
스프링은 기본적으로 생성자 기반 의존성 주입을 사용할 때 순환 참조를 허용하지 않음.
A 클래스가 B를 필요로 하고, B 클래스가 A를 필요로 한다면, 둘 중 어떤 것도 먼저 생성할 수 없기 때문임.
배경
동적쿼리 적용 코드 리팩토링 작성후 서버 빌드 중 순환 참조 문제 발생 ( @Bean의 중복 )

원인 분석
Custom 인터페이스에 구현체가 여러곳에서 사용중인게 문제일까?

해결
port 부분의 상속을 걸면 아키텍처 구조에 맞지 않다고 팀원의 의견을 통해 수렴을해서 ProblemRepository 구현체 부분에서 직접 ProblemRepositoryCustom을 직접 주입 시켜줌 으로써, 아키텍처 구조와 순환참조에 대해서 모두 지킬수가 있었다. ( Port부분의 Repository는 표지판 느낌이다. 3layer 처럼 상속이 안되기 때문에 있으면 안됨. )

반응형
'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글
| TIL 78 - [ Spring 최종 프로젝트 ( Day 14 ) - 웹 크롤링 (2) ] (0) | 2025.06.17 |
|---|---|
| TIL 77 - [ Spring 최종 프로젝트 ( Day 13 ) - 웹 크롤링 ] (0) | 2025.06.16 |
| TIL 75 - [ Spring 최종 프로젝트 ( Day 11 ) - 코드 리팩토링(1) 동적쿼리 QueryDSL ] (0) | 2025.06.12 |
| TIL 74 - [ Spring 최종 프로젝트 ( Day 10 ) - 코드 리뷰(피드백), 추후 계획, Swagger ] (0) | 2025.06.11 |
| TIL 73 - [ Spring 최종 프로젝트 ( Day 9 ) - 5분 브리핑 녹화[1회차], mvp 기능 테스트 ] (0) | 2025.06.10 |