본문 바로가기

Spring6

[Spring] Spring AOP - 관심사 분리(부가기능과 핵심기능) 아래 포스팅을 먼저 보시면 이해에 도움이 됩니다. https://byunsw4.tistory.com/49 [Design Pattern] 프록시 패턴 & 데코레이터 패턴 0. 추가된 요구사항 이미 개발된 API 에 추가되는 기능이 발생했다고 생각해보겠습니다. 아래 Controller 는 쇼핑몰에 입점한 판매자가 해당 브랜드의 쿠폰을 등록하는 API 입니다. @RequiredArgsConstructor byunsw4.tistory.com 0. AOP AOP 란, "관점 지향 프로그래밍(Aspect Oriented Programming)" 의 약자로 부가기능과 핵심기능을 분리해서 개발하는 방법으로, 핵심기능을 구현한 비지니스 로직 내에서 부가기능을 같이 관리하는 경우, 코드의 가독성이 떨어지는 문제나 유지보수.. 2024. 2. 26.
[Design Pattern] 프록시 패턴 & 데코레이터 패턴 0. 추가된 요구사항 이미 개발된 API 에 추가되는 기능이 발생했다고 생각해보겠습니다. 아래 Controller 는 쇼핑몰에 입점한 판매자가 해당 브랜드의 쿠폰을 등록하는 API 입니다. @RequiredArgsConstructor @RestController public class CouponController { private final CouponService couponService; @PostMapping("/coupons") public ResponseEntity create(@RequestBody CouponCreateRequest couponCreateRequest) { CouponCreateDto couponCreateDto = couponCreateRequest.toDto(); Lon.. 2024. 2. 15.
[Design Pattern] 템플릿/콜백 패턴(Template/Callback Pattern) 0. 분리가 어려운 반복코드 개발을 하다보면, "반복되는 부분이 눈에 보이는데, 쉽사리 분리하지 못하는 경우" 가 종종 발생하곤 합니다. 대표적으로, Java 의 try / catch / finally 가 있죠. 아래 코드는 DataSource 를 활용해 데이터를 처리하는 DAO 코드를 작성한 예시 입니다. @Repository public class UserDao { public DataSource dataSource; public UserDao(DataSource dataSource) { this.dataSource = dataSource; } public void insert(User user) { Connection c = null; PreparedStatement ps = null; try { .. 2023. 12. 8.
[Spring Rest Docs] 테스트 코드를 통한 API 문서 만들기 API 를 개발하면 가장 중요한 부분이 바로 API 사용법 일 것 입니다. 그리고 다른 사람이 이 API 사용법을 빠르게 파악하기 위해서는 API 에 관련된 내용(URL, 요청에 필요한 데이터, 응답 등)을 잘 정리해놓는 것이 중요합니다. Spring 에서는 이러한 부분을 Spring Rest Docs 로 해결합니다. 본 포스팅은 아래 환경을 기준으로 작성되었습니다. 개발환경 : SpringBoot 3.1.5 / Java 17 1. Spring Rest Docs 설정하기 spring rest docs 를 사용하기 위해선 build.gradle 에 아래와 같은 설정이 필요합니다. plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id 'i.. 2023. 10. 20.
[ArgumentResolver] 로그인 여부를 ArgumentResolver로 처리하기 사이드 프로젝트를 하다보면, 거의 필수로 들어가는 기능이 로그인 기능이라고 생각합니다. 편의를 위해 소셜로그인(ex. 카카오, 구글, 네이버 로그인)을 적용시키는 경우도 있지만, 로그인과 사용자 인증에 대한 깊은 고민을 해볼 필요가 있어서 한 번 쯤 직접 A부터 Z까지 개발해보는 것도 좋은 것 같습니다. 본 포스팅은 제가 사이드 프로젝트를 진행하면서 로그인과 사용자 인증 처리를 Spring 의 ArgumentResolver로 적용한 과정을 적어보자 합니다. 1. 로그인 기능 로그인 기능 자체는 어렵지 않다. 단순하게 로그인 아이디와 비밀번호를 받아 조회되는 사용자가 있으면 성공, 없으면 실패 정도의 로직입니다. 보통 로그인 기능을 구현할 때는 세션을 사용하지만, 공부를 해볼 겸 JWT 를 사용해봤습니다... 2023. 4. 25.
스프링의 객체지향 스프링을 잘 이해하기 위해서는 먼저 객체지향 설계의 5개의 원칙을 알아야 된다고 합니다. 오늘은 객체지향 설계의 5개의 원칙 중 스프링을 설명하기 위해 꼭 필요한 원칙과 그 원칙의 의미를 한 번 알아보며, 스프링으로 어떻게 풀어나가는지 한 번 알아보겠습니다. 1. 객체지향 설계의 5개 원칙 - SOLID 객체지향 설계의 5개의 원칙을 SOLID 라고 부릅니다. SOLID는 아래 5개의 원칙을 의미합니다. SRP : 단일 책임 원칙 (Single Responsibility Principle) OCP : 개방 폐쇄 원칙 (Open/Closed Principle) LSP : 리스코프 치환 원칙 (Liskov Substitution Principle) ISP : 인터페이스 분리 원칙 (Interface Segr.. 2023. 3. 6.