본문 바로가기
728x90

코비의 개발일지5

Facade Pattern 적용기 이번 포스트는 개발을 하면서 하나의 서비스가 여러 개의 레포지토리를 의존하는 방식을 해결하기 위해서 퍼사드 패턴을 적용한 과정에 대해서 써보려 합니다. 목차 하나의 서비스가 여러 개의 레포지토리를 의존하는 코드의 문제점 퍼사든 패턴 적용 결론 하나의 서비스가 여러 개의 레포지토리를 의존하는 코드의 문제점 밑은 퍼사든 패턴을 적용하기 전 주문/결제 서비스 코드와 아키텍처 입니다. 지금 생각하면 정말 부끄러울 정도로 생각 없이 코드를 작성한 거 같다고 느껴지네요...ㅋㅋ @Service @RequiredArgsConstructor public class OrdersServiceImpl implements OrdersService{ private final OrdersRepository ordersReposi.. 2023. 8. 27.
스프링 부트로 메일 발송 기능 구현하기 이번에 작은 쇼핑몰 개발을 하고 있는데 메일 발송 기능을 구현하면서 제가 고민한 부분과 이 고민들을 어떻게 해결하였는지 공유하기 위해 글을 적어봅니다. 요구사항 중 유저가 상품을 결제하게 되면 구매한 유저와 관리자에게 주문 정보를 메일로 보내달라는 요구사항이 있었습니다. 처음에는 메일 서버에 결제 메일 발송에 관한 API를 하나 만들어서 요청 바디에 결제 메일 발송에 관련된 데이터를 받은 후 메일 템플릿을 생성해서 구매한 유저와 관리자에게 메일 발송을 해주면 되겠네!!라고 생각하였지만 다시 한번 곰곰이 생각을 해보니 이렇게 결제 메일에만 종속된 API를 만들 경우 추후에 회원가입시 메일을 발송해달라는 요청이 오면 또 회원가입시 메일 요청을 처리하는 API를 따로 만들어야 하는 상황이 오겠네... 라는 문.. 2023. 6. 24.
필터에서 응답 데이터 가공 이번에 저희 팀이 개발한 기업용 해외송금 서비스에 기능 추가 건이 생기면서 새로운 외부 API와 연동을 하게 되었는데 연동 조건에 서로 요청과 응답에 signature를 추가하고 검증해야 하는 조건이 있었습니다. 저는 요청 헤더의 signature 복호화 및 검증과 응답 시 헤더에 signature 추가를 필터에서 하는 것이 적합하다고 판단하였고 이 역할을 하는 필터의 개발을 맡게 되었습니다. (밑의 코드들은 회사에서 작성한 코드를 공개할 수 없기 때문에 비슷한 역할을 하는 필터를 따로 만든 예제 코드입니다. 또한 이번 포스트에서는 암호화 복호화 방법에 대해서는 다루지 않습니다.) Signature 검증 및 생성을 담당하는 필터 SecurerFilter Code @Slf4j @RequiredArgsCon.. 2023. 4. 15.
컨트롤러 단위 테스트시 모든 요청에 대한 공통 속성 적용하기 이번에 사내에서 Spring REST Doc을 이용하여 API 문서화 작업을 진행 중 컨트롤러 테스트 코드에 공통적으로 적용되는 속성에 대한 코드가 반복적으로 나타나는 부분을 리팩토링 한 내용을 공유할까 합니다. 밑의 코드는 테스트 코드 작성 시 코드마다 반복되는 부분을 나타내는 코드입니다. (회사 api의 상세 주소는 공개할 수 없기 때문에 주소는 간략하게 작성하였습니다.) 코드를 보시면 contextPath, characterEncoding, contentType이 계속 반복되는 것을 볼 수 있습니다. 처음에는 대수롭지 않게 넘어갔는데 테스트 코드가 점점 많아질수록 저 코드를 치는 것조차 조금씩 귀찮아지더라고요... @WebMvcTest( controllers = CommonApiControllerT.. 2023. 4. 10.
Spring REST Doc 적용기 현재 사내에서 api 문서를 postman으로 관리를 하고 있는데 곧 외부망을 내부망으로 교체할 예정이라 외부망을 사용하지 못할 시에 postman으로 api를 문서화하지 못하기 때문에 다른 방식으로 api를 문서화할 수 있는 방법을 찾아야 했고 같은 팀의 대리님이 문서 작업을 자동화할 수 있는 방법을 찾아보시다가 RESTful 서비스에 대한 문서 생성을 도와주는 Spring REST Doc이라는 라이브러리를 알게 되었고 직접 사용해 보신 후 팀 내에 도입하기로 결정하였습니다. Spring REST Doc이란? RESTful 서비스에 대한 정확하고 읽기 쉬운 문서를 생성해주는 자바 라이브러리 입니다. Asciidoctor를 사용하여 필요에 맞게 스타일이 지정된 HTML, PDF 등을 생성해줍니다. Spr.. 2023. 4. 2.
728x90