TIL 76 - [ Spring 최종 프로젝트 ( Day 12 ) - 코드 리팩토링(2) 동적쿼리 QueryDSL, 트러블 슈팅 ]

2025. 6. 13. 23:22·[내일배움캠프-Sparta]/Spring 6기
반응형

💬 코드 리팩토링 

해당하는 로직을 동적쿼리로 바꿔줌으로써 하나의 메소드로 간편하게 바꿀수 있었다. 계속 정적 쿼리문을 사용했다면 무수한  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
'[내일배움캠프-Sparta]/Spring 6기' 카테고리의 다른 글
  • TIL 78 - [ Spring 최종 프로젝트 ( Day 14 ) - 웹 크롤링 (2) ]
  • TIL 77 - [ Spring 최종 프로젝트 ( Day 13 ) - 웹 크롤링 ]
  • TIL 75 - [ Spring 최종 프로젝트 ( Day 11 ) - 코드 리팩토링(1) 동적쿼리 QueryDSL ]
  • TIL 74 - [ Spring 최종 프로젝트 ( Day 10 ) - 코드 리뷰(피드백), 추후 계획, Swagger ]
dimenshun
dimenshun
한 소년의 개발 일기
    반응형
  • dimenshun
    Dev Life Notes
    dimenshun
  • 전체
    오늘
    어제
    • 분류 전체보기 (268)
      • CS (23)
        • 자료구조 (0)
        • 알고리즘 (0)
        • 컴퓨터 구조 (8)
        • 네트워크 (6)
        • 운영체제 (3)
        • DB ( + SQLD ) (5)
        • SW공학 (1)
      • 프로그래밍 (3)
        • Java (0)
        • Spring (0)
        • HTML,CSS (3)
        • JavaScript (0)
      • 개발 툴 (7)
        • Git(버전관리) (1)
        • Docker (3)
        • AWS (2)
        • JSP (1)
      • 코딩테스트(Algorithm) (125)
        • 백준 (6)
        • 프로그래머스 (119)
      • [내일배움캠프-Sparta] (110)
        • Spring 6기 (106)
        • KPT 회고 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQLD
    운영체제
    db
    network
    내일배움캠프
    트랜잭션
    spring
    AWS
    Java
    SQL
    네트워크
    개발자
    CPU
    cs
    백엔드
    웹
    세션
    OS
    알고리즘
    web
    코딩테스트
    docker
    컴퓨터구조
    Python
    It
    Testcode
    KPT
    메모리
    배포
    Til
  • hELLO· Designed By정상우.v4.10.3
dimenshun
TIL 76 - [ Spring 최종 프로젝트 ( Day 12 ) - 코드 리팩토링(2) 동적쿼리 QueryDSL, 트러블 슈팅 ]
상단으로

티스토리툴바