목록2024/06 (16)
초보개발자 긍.응.성
1. 개요 - MDC의 리액티브에서의 한계점MDC(Mapped Diagnositc Context)는 클라이언트 요청에 대한 유니크한 값을 로그 컨텍스트에 담아 어느 위치에서든 해당 데이터에 대한 로깅이 가능하도록 지원합니다.MDC는 내부적으로 ThreadLocal을 통하여 메타데이터를 관리하는데, 이는 SpringMVC와 같이 하나의 요청을 하나의 스레드에서 수행하는(thread-per-request) 구조에서 정상적으로 동작합니다.하지만 Event Loop 방식으로 동작하는 Spring WebFlux에서는 하나의 요청에 대하 여러 스레드에서 수행될 수 있기에, MDC를 통하여 로깅하는것은 불가능합니다.Spring MVC에서의 방식을 명령형 프로그래밍 방식, WebFlux의 방식을 리액티브 프로그래밍 방..
Jenkins의 계정정보를 잃어버려 이를 복구하며 겪었던 삽질에 대한 내용과, 마이그레이션까지 진행했던 절차에 대해 정리한 글입니다.1. 개요저희 팀에서는 배치 작업 외 PR 요청 시 브랜치 테스트, 일별 메인 브랜치의 테스트 커버리지 측정, 배포 전 소스 컴파일 및 빌드 등 다양한 용도로 Jenkins를 사용중입니다.보통 배치 Job을 개발하여 등록하는 경우가 아니라면 초기 세팅 후엔 Jenkins에 접근할 일이 별로 없습니다. 이번에 사용하던 애플리케이션 빌드 시 maven 버전의 업그레이드가 필요하여 이를 세팅하기 위해 오래간만에 Jenkins 접근하였다가 인증 정보가 만료되어 로그인이 되지 않는 이슈가 있었습니다.하지만 Jenkins 서버가 설치된 장비에 직접 접근할수만 있다면 복구할 수 있는 방..
개요 및 예시는 이전글로부터 이어서 진행합니다.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..