본문 바로가기
728x90

디자인 패턴4

Facade Pattern 적용기 이번 포스트는 개발을 하면서 하나의 서비스가 여러 개의 레포지토리를 의존하는 방식을 해결하기 위해서 퍼사드 패턴을 적용한 과정에 대해서 써보려 합니다. 목차 하나의 서비스가 여러 개의 레포지토리를 의존하는 코드의 문제점 퍼사든 패턴 적용 결론 하나의 서비스가 여러 개의 레포지토리를 의존하는 코드의 문제점 밑은 퍼사든 패턴을 적용하기 전 주문/결제 서비스 코드와 아키텍처 입니다. 지금 생각하면 정말 부끄러울 정도로 생각 없이 코드를 작성한 거 같다고 느껴지네요...ㅋㅋ @Service @RequiredArgsConstructor public class OrdersServiceImpl implements OrdersService{ private final OrdersRepository ordersReposi.. 2023. 8. 27.
Spring AOP 이번 포스트에서는 Spring의 3대 요소 중 하나인 Spring AOP에 대해서 알아보도록 하겠습니다. AOP(Aspect Oriented Programming) 일단 AOP가 뭔지 알아보기 전에 Asepect가 뭔지에 대해서 간단하게 알아보도록 하겠습니다. Aspect란 애플리케이션의 핵심 기능을 담고 있지는 않지만, 애플리케이션을 구성하는 중요한 한 가지 요소이면서 핵심 기능에 부가되어 의미를 갖는 특별한 모듈을 가르킵니다. Aspect는 부가 기능을 정의한 코드인 어드바이스와 어드바이스를 어디에 적용할지 결정하는 포인트 컷을 함께 갖고 있으며, 이 둘을 합친 개념의 어드바이저는 단순한 형태의 Aspect라고 볼 수 있습니다. Aspect를 간단하게 알아보았으니 이제 AOP에 대해서 알아보도록 하겠.. 2023. 8. 5.
스프링 부트로 메일 발송 기능 구현하기 이번에 작은 쇼핑몰 개발을 하고 있는데 메일 발송 기능을 구현하면서 제가 고민한 부분과 이 고민들을 어떻게 해결하였는지 공유하기 위해 글을 적어봅니다. 요구사항 중 유저가 상품을 결제하게 되면 구매한 유저와 관리자에게 주문 정보를 메일로 보내달라는 요구사항이 있었습니다. 처음에는 메일 서버에 결제 메일 발송에 관한 API를 하나 만들어서 요청 바디에 결제 메일 발송에 관련된 데이터를 받은 후 메일 템플릿을 생성해서 구매한 유저와 관리자에게 메일 발송을 해주면 되겠네!!라고 생각하였지만 다시 한번 곰곰이 생각을 해보니 이렇게 결제 메일에만 종속된 API를 만들 경우 추후에 회원가입시 메일을 발송해달라는 요청이 오면 또 회원가입시 메일 요청을 처리하는 API를 따로 만들어야 하는 상황이 오겠네... 라는 문.. 2023. 6. 24.
필터에서 응답 데이터 가공 이번에 저희 팀이 개발한 기업용 해외송금 서비스에 기능 추가 건이 생기면서 새로운 외부 API와 연동을 하게 되었는데 연동 조건에 서로 요청과 응답에 signature를 추가하고 검증해야 하는 조건이 있었습니다. 저는 요청 헤더의 signature 복호화 및 검증과 응답 시 헤더에 signature 추가를 필터에서 하는 것이 적합하다고 판단하였고 이 역할을 하는 필터의 개발을 맡게 되었습니다. (밑의 코드들은 회사에서 작성한 코드를 공개할 수 없기 때문에 비슷한 역할을 하는 필터를 따로 만든 예제 코드입니다. 또한 이번 포스트에서는 암호화 복호화 방법에 대해서는 다루지 않습니다.) Signature 검증 및 생성을 담당하는 필터 SecurerFilter Code @Slf4j @RequiredArgsCon.. 2023. 4. 15.
728x90