1. 스프링 @Transactional의 동작 방식에 대해 완벽하게 이해하기 [ parallelStream에서 @Transactional을 사용하는 예제 코드 ] 다음과 같은 간단한 JPA 엔티티가 있다. @Entity @Getter @NoArgsConstructor public class MyEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; public MyEntity(String name) { this.name = name; } } 그리고 해당 엔티티를 저장하는 서비스 계층에서 조건에 따라 런타임 예외를 던진다고 하자. @Service @Transactional(rea..
1. @PathVariable 또는 @RequestParam 등의 값을 변환하여 받기 (암호화된 @PathVaraible 값 복호화) [ 컨트롤러에서 받는 값 변환의 필요성 ] 애플리케이션을 개발하다 보면 리소스에 대한 고유한 값인 식별자(identifier)을 받아 요청을 처리하는 경우가 있다. 리소스의 식별자는 시스템 내부 정보이므로, 해당 값이 1씩 단순 증가하는 값이라면 암/복호화를 해서 사용해야 한다. 예를 들어 다음과 같이 특정 멤버의 포인트를 증가시키는 API가 있다고 하자. 이때 PathVariable로 받는 memberId 값은 암호화되어 있기 때문에 컨트롤러 혹은 이를 사용하는 하위 계층에 복호화 로직을 넣어주어야 한다. @RestController @RequiredArgsConstru..
이번에는 Spring Boot3.2에 새롭게 추가될 RestClient에 대해 알아보도록 하겠습니다. 1. Spring Boot3.2에 새롭게 추가될 RestClient [ RestClient가 필요한 이유 ] Spring에서는 RestTemplate, WebClient와 같은 Http Client를 지원하고 있다. 하지만 이들은 각각 문제점을 가지고 있었다. 대표적으로 RestTemplate은 사용이 직관적이지 못하며, WebClient와 HttpInterface는 web-flux 의존성을 필요로 했다. 2009년에 Spring 3.0에 RestTemplate이 처음 도입된 이후, Template과 같은 클래스를 통해 모든 HTTP의 기능을 노출하는 것이 부담을 줄 수 있다는 것을 발견했다. 그래서 S..
아래의 내용은 Spring Cloud Gateway의 공식 문서를 보고 요약 정리한 내용입니다. 1. Spring Cloud Gateway 공식 문서 간단히 살펴보기 [ Spring Cloud Gateway란? ] Spring 생테계를 기반으로 하는 API Gateway를 제공해주는 프로젝트 Spring Cloud Gateway는 간단하지만 효율적인 방법으로 API를 라우팅하는 방법을 제공함 그 외에도 security, monitoring/metrics, resiliency 등과 같은 공통 관심사를 처리해줌 최신의 버전은 Spring 6, Spring Boot 3 and Project Reactor를 기반으로 동작 [ Spring Cloud Gateway의 동작 순서 ] Client는 Spring Clo..
이벤트(Event)는 매우 유용하지만 상당히 간과되는 기능 중 하나입니다. 작년에 아마존 CTO는 이벤트 드리븐 아키텍처로 가야 한다고 기조 연설을 하기도 했는데, 이번에는 스프링 프레임워크에서 이벤트(Event)를 사용하는 방법에 대해 알아보겠습니다. 1. 스프링에서 이벤트 사용법 및 주의사항[ 스프링에서 이벤트의 발행과 구독 ]스프링은 이벤트를 발행하고 구독하는 기능을 제공하고 있는데, 해당 기능은 아래와 같은 기본적인 가이드를 따라야 한다.스프링 부트 1.3(엄밀히는 스프링 4.2) 이전 버전이라면 이벤트 클래스가 ApplicationEvent를 상속해야 함이벤트 발행을 위해서는 ApplicationEventPublisher를 주입받아 사용해야 함이벤트 구독을 위해서는 ApplicationLi..