BackEnd/쿠링15 [쿠링] 중복코드를 Template Method Pattern으로 Refactoring 하기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 현 상황 (개선하기 전의 코드) 우선 다음 코드는 Notice를 Scarp 하는 코드입니다. 문제는 (scarp, scarpAll), (requestWithDeptInfo, requestAllPageWithDeptInfo) 간의 중복 코드가 너무나 많다는 점입니다. scarp : 최근 공지 조회 scarpAll : 모든 공지 조회 이렇게 2개의 메서드를 구분하다 보니 발생한 중복 코드였습니다. 템플릿 메서드 패턴, 함수형 인터페이스, 람다식을 통하여 중복을 제거할 생각입니다! 우선 개선하기 전의 코드는 다음과 같습니다! @Slf4j @Component @NoArgsConstructor public class DepartmentNo.. BackEnd/쿠링 2023. 3. 27. [쿠링] Spring에서 Custom Annotation을 사용하여 객체를 Map에 등록시키기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 현 상황 (개선하기 전의 코드) 우선 쿠링에서는 DepartmentName이라는 enum값과, 해당 학과의 정보를 저장하고 있는 DeptInfo객체를 저장하고 있다. 이를 통해 map을 필요한 곳에서 전달받아 enum을 key로 사용하여 해당 학과의 정보를 사용하는 코드이다. 우선 코드는 대략 다음과 같다. 이 정도만 보면 몇 개 안돼서 수동 등록할 수도 있을 것 같지만... 무려 학과가 75개.... 이걸 수동으로 다 등록하는 건 진짜 무리다... (물론 지금 코드는 그렇게 구현된 있긴 한데...) 나는 Custom Annotation을 만들어서 Reflection을 통해 configuration에서 등록하여 bean객체로 만들.. BackEnd/쿠링 2023. 3. 21. [쿠링] QueryDsl을 활용한 키워드 검색 쿼리 구현 개인적으로 작업하고 있는 프로젝트에서 검색쿼리를 리팩토링 해야 하는 상황이 발생하였다. 우선 이전 방식의 코드를 살펴본 후, 이를 리팩토링 해 나가는 과정을 남겨보자! 1. 리팩토링 전의 코드 우선 keywords를 전달받아 처리하는 이전의 코드는 다음과 같다. ▶ NoticeServce.handleSearchRequest() public List handleSearchRequest(String keywords) { keywords = keywords.trim(); String[] splitedKeywords = keywords.split("[\\s+]"); // 키워드 중 공지 카테고리가 있다면, 이를 영문으로 변환 for (int i = 0; i < splitedKeywords.length; ++i).. BackEnd/쿠링 2023. 3. 7. 이전 1 2 다음