목록Spring (21)
초보개발자 긍.응.성
지난 글에서는 MDC를 데이터를 리액티브 환경에서 사용할때 생기는 이슈와 해결할 수 있는 방법에 대하여 알아보았습니다.https://ckddn9496.tistory.com/179Reactor With MDC - SpringBoot 2그리고 Reactor도 이러한 이슈가 있다는것을 알고 있었는지, Reactor 3.5 버전부터 자동으로 ThreadLocal의 값을 Context를 통하여 전파할 수 있도록 Automatic Context Propagation을 제공하게 되었습니다.이번 글에서는 SpringBoot 3 버전 WebFlux에서 Automatic Context Propagation를 통해 MDC를 다루는 법에 대하여 알아보겠습니다.1. Reactor With MDC (springboot 3)Spr..
1. 개요 - MDC의 리액티브에서의 한계점MDC(Mapped Diagnositc Context)는 클라이언트 요청에 대한 유니크한 값을 로그 컨텍스트에 담아 어느 위치에서든 해당 데이터에 대한 로깅이 가능하도록 지원합니다.MDC는 내부적으로 ThreadLocal을 통하여 메타데이터를 관리하는데, 이는 SpringMVC와 같이 하나의 요청을 하나의 스레드에서 수행하는(thread-per-request) 구조에서 정상적으로 동작합니다.하지만 Event Loop 방식으로 동작하는 Spring WebFlux에서는 하나의 요청에 대하 여러 스레드에서 수행될 수 있기에, MDC를 통하여 로깅하는것은 불가능합니다.Spring MVC에서의 방식을 명령형 프로그래밍 방식, WebFlux의 방식을 리액티브 프로그래밍 방..
개요 및 예시는 이전글로부터 이어서 진행합니다.https://ckddn9496.tistory.com/176ObjectMapper Enum Control – 1. BeanSerializerModifier (직렬화 커스터마이징)1. 역직렬화 중복 작업 제거BeanDeserializerModifier직렬화 방식을 커스텀하게 변경했던 것처럼 Enum 필드 역직렬화하는 방식도 동일하게 애노테이션을 통해 적용하려 합니다.public @interface EnumDeserialize { /* enum 객체를 deserialize 할때 호출할 메서드 명 */ String value();} 역직렬화할 Enum 타입에 붙여줄 애노테이션을 먼저 생성하였습니다.class Deposit { @EnumDeseria..
Spring 프레임워에서 Jackson 라이브러리를 사용하다 보면 Enum 타입에 대하여 변환 시 특별한 처리를 해주어야 할 때가 있는데, 이유는 기본적으로 ObjectMapper가 Enum 타입을 직렬화 시 타입 값의 이름으로 직렬화되기 때문입니다(내부적으로는 toString()을 통해서이나 모든 Enum의 오버라이드 하지 않은 toString 은 name을 반환합니다). 일반적으로 Enum 타입의 “상수” 값은 개발자가 이해하기 쉬운 문자열로 네이밍되고, 실제로 사용할 때는(클라이언트 응답 구성, 외부 API 서버 응답 파싱 등) 이름과는 다른 코드값으로 사용해야 합니다.이러한 작업을 위해 특정 필드를 원하는 값으로 직렬화하려면 @JsonSerializer 애노테이션과 함께 커스텀 한 JsonSeri..
이 글은 Spring Batch의 Meta-Data Schema를 참고하여 작성하였으며, 개인적으로 스프링 배치에 사용하는 메타 테이블에 대해 공부하며 정리한 글입니다. 잘못된 내용이 있다면 짚어주시면 감사하겠습니다. ERD Spring Batch의 메타 데이터 테이블들은 배치의 도메인 객체들과 거의 정확히 일치한다. JobExecution와 BATCH_JOB_EXECUTION 테이블과 같이 말이다. DDL 스크립트 이 메타 데이터 테이블의 DDL은 org.springframework.batch.core 패키지 하위에 schema-*.sql 파일로 존재한다. 이때 *는 지원하는 DB 이름이다. 스프링 배치 버전 업으로 메타 데이터를 마이그레이션 해야 할 시 org/springframework/batch/..
What is Spring Data Spring Data는 기본 데이터 저장소(DB)에 대한 특성은 유지하며, 데이터 액세스 방법에 대하여 친숙하고 익숙한 접근 방법을 제시하는 목적을 가진 Spring 기반 프로그래밍 모델입니다. Spring Data를 이용하면 데이터 액세스 기술, 관계형/비관계형 데이터베이스, map-reduce 프레임워크, cloud기반 데이터 서비스를 쉽게 적용할 수 있습니다. Sping Data는 각각의 데이터베이스에 대해 만들어진 특정한 하위 프로젝트를 포함하는 *umbrella project 입니다. 그렇기에 이 프로젝트는 다양한 회사들과 개발자와 함께 개발되고 있습니다. > Umbrella Project 란? Umbrella project는 (i) 명시된 표준을 준수하는 b..