Yun Blog

기술 블로그

Spring Batch CSV Reader & Writer

Spring Batch를 이용해서 데이터베이스에 저장되어 있는 정보를 CSV file로 저장을 하는 방법에 대해서 작성해보겠습니다. CSV Writer 데이터 흐름 payment csv 데이터의 흐름은 간단합니다. payment table -> payment.csv으로 변경됩니다. payment table의 불필요한 칼럼 id, created......

Rx Kotlin 이용해서 성능 개선

Rx Kotlin를 사용하면 스레드를 더 쉽게 사용할 수 있습니다. 시나리오 가장 흔한 케이스로 외부 API를 호출하고 그 결과에 맞게 데이터베이스를 수정하는 방식입니다. 주문을 시스템 내부 API를 호출해서 진행한다. 내부 API 시스템 성공 여부에 따라 status를 지정한다. Code Entity 1234567891011121314151617......

JPA @Where 사용법

해당 코드는 Github 공개되어 있습니다. JPA에서 @Where를 사용하면 엔티티를 조회하는 경우 일괄적인 Where 조건을 추가할 수 있습니다. 코드를 살펴보겠습니다. Entity 1234567891011121314151617181920212223242526272829303132333435@Entity@Table(name = "member"......

Mockserver Netty 사용해서 HTTP 통신 Mocking 하기

해당 코드는 Github 공개되어 있습니다. 테스트 코드를 작성할 할 때 외부 서비스와 통신하는 구간은 Mocking 해서 해서 테스트를 진행하게 됩니다. 대표적으로 HTTP 외부 통신이 있습니다. 이와 비슷한 내용으로 RestTemplate Mock 기반 테스트하기을 포스팅을 했었습니다. 그와 비슷한 주제로 Mockserver Netty 기반으로......

Spring Cloud Gateway

Getting Started

해당 코드는 Github 공개되어 있습니다. 용어 명칭 설명 라우트(Route) 라우트는 목적지 URI, 조건자 목록과 필터의 목록을 식별하기 위한 고유 ID로 구성된다. 라우트는 모든 조건자가 충족됐을 때만 매칭된다 조건자(Predicates) 각 요청을 처리하기 전에 실행되는 로직, 헤더와 입력된 값 등 다양한 HTTP 요청이 ......

ApplicationEventPublisher 기반으로 강결합 및 트랜잭션 문제 해결

해당 코드는 Github 공개되어 있습니다. 회원 가입 시나리오 회원 가입 시 회원 가입 쿠폰 발행, 회원 가입 이메일 발등을 해야 한다면 다음 코드처럼 로직을 만들 수 있습니다. 이메일 전송 실패, 쿠폰 발급이 실패하는 경우 회원 가입을 다시 해야 한다는 가정으로 설명드리겠습니다.(다소 과격한 시나리오지만 원자성에 대한 설명을 위해서 이런 시나......

Spring 동일한 Bean(Class)에서 @Transactional 동작 방식

동일한 Bean 내에서 @Transactional을 사용하는 경우 예상했던 것과 다르게 동작할 수 있습니다. 발생 원인과 해결 방법에 대해서 정리한 포스팅입니다. 123456789101112131415161718192021222324252627282930313233@Serviceclass CouponService( private val coupo......

Spring Cloud 살펴보기

Spring Cloud Config 스프링 클라우드 컨피그는 중앙 집중식 마이크로서비스 구성을 지원한다. 여기서 두 가지 중요한 구성 요소의 조합이다. 스프링 클라우드 컨피그 서버 : 버전 관리 리포지토리로 백업된 중앙 집중식 구성 노출을 지원한다. 스프링 클라우드 컨피그 클라이언트 : 애플리케이션이 스프링 클라우드 컨피그 서버에 연결하도록 지원한다......

인텔리제이 Github Code Review

인텔리제이기반으로 Github 기반 Pull Request & Code Review를 진행할 수 있습니다. 바로 기능을 살펴보겠습니다. 인텔리제이 기반 Pull Request는 Github로 프로젝트 관리하기 Part1을 참고해 주세요 Actions에서 View Pullrequests을 통해서 현재 PR을 확인할 수 있습니다. state:o......

Junit5 특징 소개

인스턴스 생성 특징, 테스트 순서

Instance 특징 Junit5는 테스트 메서드마다 인스턴스를 새로 생성하는 것이 기본 전략입니다. 이는 테스트 코드(메서드) 간의 디펜던시 줄이기 위해서입니다. 아래 코드를 통해서 살펴보겠습니다. 1234567891011121314151617181920internal class Junit5 { private var value = 0 ......