2024/09 8

Trouble Shooting - Spring Quartz Clustering

스프링 환경에서 배치 프로젝트를 구성하며 겪은 트러블슈팅 경험에 대해 정리하고자 한다. 스프링 쿼츠를 자주 사용해본 사람이라면 별 거 아닌 내용이겠지만, 나를 포함하여 경험이 없는 사람은 원인을 파악하기 쉽지 않은 내용이란 생각이 든다. (원인을 찾기가 너무너무 힘들었다...)개발 환경스프링배치스프링쿼츠 (Cron Trigger 기반의 스케줄링)Spring Boot 3.2.x문제 상황은 다음과 같았다.1. 최초에 배치 Job을 개발한 후 서버에 배포하여 스케줄을 등록해놓았는데, Step Reader에서 Sql Syntax Error가 발생하였다. 테스트를 위해 Where조건에 주석을 --로 처리하였는데, xml에서 파싱을 하지 못해 오류가 난 것이다.2. 로컬에서 수정 및 테스트를 완료한 후 재배포를 하..

development/spring 2024.09.12

@Transactional 전파속성 주의사항

스프링에서 제공하는 트랜잭션 추상화를 위한 선언적 트랜잭션 @Transactional은 다음과 같은 전파 속성을 갖는다.REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED)SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS)MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY)REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW)NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED)NEVER(TransactionDefinition.PROPAGATION_NEVER)NESTE..

development/spring 2024.09.10

@RequestBody와 Spring의 MessageConverter (Feat. Xss Prevent Filter)

Message Converter에 관한 문제상황 및 해결 방법에 대해 개략적인 내용을 정리한다.프로젝트에 보안을 강화하기 위해 naver에서 제공하는 lucy-xss를 적용하였으나, lucy-xss filter는 form-data 형태의 데이터를 치환하는 데 그 목적이 있다 보니 json 형태의 데이터가 정상적으로 처리되지 않는 문제가 발생하였다.구글을 여기저기 뒤져보니 Objectmapper를 커스텀한 후 Message Converter 객체를 새로 생성하여 매핑시켜주어 별도의 라이브러리 없이 특수문자 치환을 적용할 수 있는 방법이 있었는데, 이 방식은 Request Body에 대한 치환은 가능하지만 Response에 대한 처리는 할 수 없다는 문제가 있었다.https://jojoldu.tistory...

development/spring 2024.09.09