본문 바로가기
728x90

spring boot10

StyleLab의 일곱 번째 노트: 상품 목록 조회 최적화를 위한 파티셔닝 - 2 이전 포스팅에 이어서 애플리케이션에서 각 파티셔닝 테이블의 데이터를 조회하는 코드는 어떻게 구현하였는지 공유해 보도록 하겠습니다. 목차 상품 목록 조회 API의 Controller ProductCategoriesFacade의 findAllProductCategoryConditions() 메서드 ProductCategotryType의 역할 ProductCategoriesService의 findAllProductCategoryConditions() 메서드 ProductCategoryQueryDslRepositoryStrategyMap과 ProductCategoryQueryDslRepository interface 몇 가지의 문제점 문제점 개선 느낀점 1. 상품 목록 조회 API Controller 밑의 Co.. 2024. 1. 30.
Facade Pattern 적용기 이번 포스트는 개발을 하면서 하나의 서비스가 여러 개의 레포지토리를 의존하는 방식을 해결하기 위해서 퍼사드 패턴을 적용한 과정에 대해서 써보려 합니다. 목차 하나의 서비스가 여러 개의 레포지토리를 의존하는 코드의 문제점 퍼사든 패턴 적용 결론 하나의 서비스가 여러 개의 레포지토리를 의존하는 코드의 문제점 밑은 퍼사든 패턴을 적용하기 전 주문/결제 서비스 코드와 아키텍처 입니다. 지금 생각하면 정말 부끄러울 정도로 생각 없이 코드를 작성한 거 같다고 느껴지네요...ㅋㅋ @Service @RequiredArgsConstructor public class OrdersServiceImpl implements OrdersService{ private final OrdersRepository ordersReposi.. 2023. 8. 27.
스프링 부트로 메일 발송 기능 구현하기 이번에 작은 쇼핑몰 개발을 하고 있는데 메일 발송 기능을 구현하면서 제가 고민한 부분과 이 고민들을 어떻게 해결하였는지 공유하기 위해 글을 적어봅니다. 요구사항 중 유저가 상품을 결제하게 되면 구매한 유저와 관리자에게 주문 정보를 메일로 보내달라는 요구사항이 있었습니다. 처음에는 메일 서버에 결제 메일 발송에 관한 API를 하나 만들어서 요청 바디에 결제 메일 발송에 관련된 데이터를 받은 후 메일 템플릿을 생성해서 구매한 유저와 관리자에게 메일 발송을 해주면 되겠네!!라고 생각하였지만 다시 한번 곰곰이 생각을 해보니 이렇게 결제 메일에만 종속된 API를 만들 경우 추후에 회원가입시 메일을 발송해달라는 요청이 오면 또 회원가입시 메일 요청을 처리하는 API를 따로 만들어야 하는 상황이 오겠네... 라는 문.. 2023. 6. 24.
컨트롤러 단위 테스트시 모든 요청에 대한 공통 속성 적용하기 이번에 사내에서 Spring REST Doc을 이용하여 API 문서화 작업을 진행 중 컨트롤러 테스트 코드에 공통적으로 적용되는 속성에 대한 코드가 반복적으로 나타나는 부분을 리팩토링 한 내용을 공유할까 합니다. 밑의 코드는 테스트 코드 작성 시 코드마다 반복되는 부분을 나타내는 코드입니다. (회사 api의 상세 주소는 공개할 수 없기 때문에 주소는 간략하게 작성하였습니다.) 코드를 보시면 contextPath, characterEncoding, contentType이 계속 반복되는 것을 볼 수 있습니다. 처음에는 대수롭지 않게 넘어갔는데 테스트 코드가 점점 많아질수록 저 코드를 치는 것조차 조금씩 귀찮아지더라고요... @WebMvcTest( controllers = CommonApiControllerT.. 2023. 4. 10.
예외와 예외 처리 방법 예외란? 컴퓨터 프로그램에서 예외란, 프로그램이 실행 중에 발생한 예기치 않은 오류를 말합니다. 이러한 예외 상황을 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있기 때문에 모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 통보하고 서비스를 이용하는 사용자에게 적절한 안내 메세지를 제공하는 등의 처리를 반드시 해줘야 합니다. 예외의 종류 이번 포스트에서는 Error에 대한 설명은 제외하겠습니다. Exception (Checked Exception) Exception 클래스와 이를 상속하고 Runtime Exception을 상속하지 않은 서브 클래스로 정의되는 예외입니다. 이 예외는 컴파일 시점에 예외 처리를 하는지 검사하기 때문에 개발자가 예외 처리를 강제하는 예외입니.. 2023. 4. 9.
Spring REST Doc 적용기 현재 사내에서 api 문서를 postman으로 관리를 하고 있는데 곧 외부망을 내부망으로 교체할 예정이라 외부망을 사용하지 못할 시에 postman으로 api를 문서화하지 못하기 때문에 다른 방식으로 api를 문서화할 수 있는 방법을 찾아야 했고 같은 팀의 대리님이 문서 작업을 자동화할 수 있는 방법을 찾아보시다가 RESTful 서비스에 대한 문서 생성을 도와주는 Spring REST Doc이라는 라이브러리를 알게 되었고 직접 사용해 보신 후 팀 내에 도입하기로 결정하였습니다. Spring REST Doc이란? RESTful 서비스에 대한 정확하고 읽기 쉬운 문서를 생성해주는 자바 라이브러리 입니다. Asciidoctor를 사용하여 필요에 맞게 스타일이 지정된 HTML, PDF 등을 생성해줍니다. Spr.. 2023. 4. 2.
728x90