Spring Framework/Spring boot

Spring Framework/Spring boot

[Springboot] 스프링부트 DTO enum 타입 JSON 역직렬화 하기 - @JsonProperty, @JsonCreator

Json 데이터를 자바 객체로 역직렬화할 때 발생할 수 있는 문제가 있습니다.1. Snake case를 Camel Case 케이스로 받으려고 할 때2. Enum type으로 역직렬화될 때 전달받은 값이 설정된 enum 값과 다른 경우 @JsonPropertyRequest JSON{ "my_name": "foobar"} Entitypublic class Student { private String myName;} DTOpublic class StudnetDTO { @JsonProperty("my_name") private String myName;}my_name → myName으로 치환해주어 값을 제대로 받습니다.@JsonProperty("value") : value로 설정한 값을 myName으로 받습니다..

Spring Framework/Spring boot

[Spring&WebSocket] 스프링 STOMP를 통한 채팅 서비스 개발하기 - websocket

STMOP란Simple Text Oriented Messaing Protocol의 약자WebSocket 위에서 동작하는 텍스트 기반 메시징 프로토콜클라이언트와 서버가 전송할 메시지 유형, 형식, 내용들을 정의하는 메커니즘기본적으로 Publish-Subscribe 구조로 되어있다.Publish-Subscribe 구조란 **메시지를 공급하는 주체와 소비하는 주체를 분리**해 제공하는 메시징 방법이다. Springboot에서 STOMPWebSocket 기반으로 각 Connection마다 WebSocketHandler를 구현하지 않고 @Controller로 된 객체를 이용해 관리할 수 있음메시지는 STOMP의 Destination 헤더를 기반으로 @Controller 객체의 @MethodMapping 메서드로 ..

Spring Framework/Spring boot

[SpringBoot] 스프링부트 @Transactional 개념 및 사용법 - Required, requires_new

Transaction이란트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 의미합니다. 데이터베이스의 상태를 변화한다는 것은 insert, update, delete 같은 SQL 문을 이용해 데이터베이스에 접근하는 것을 의미합니다. ⭐️ Spring에서의 @Transcational 이란Springboot에서 @Transcational은 하나의 함수가 하나의 데이터베이스 트랜잭션의 범위 안에서 실행되어야 하는 것을 명시합니다. 해당 어노테이션을 메서드에 적용시키면, Springboot는 해당 메서드를 시작할 때 트랜잭션을 시작하고, 메서드가 성공적으로 완료되면 트랜잭션을 commit 합니다. (만약, 도중 예외가 발생하면 rollback 합니다.) 이를 통해 비정상적인 종료나 오류로 인..

Spring Framework/Spring boot

Spring Batch JobBuilder와 StepBuilder로 데이터 마이그레이션 - ID 충돌 해결 방법

이슈👉 1. JpaItemWriter Persist 설정 오류👉 2. Spring Batch 5.0 업데이트로 인한 JobBuilderFactory, StepBuilderFactory Deprecated👉 3. 데이터 마이그레이션하는 Entity Id 설정 이슈문제1. 기존 ADatabase에서 BDatabase로 데이터 마이그레이션처음에 batch 프로세스를 작성해 본 적이 없어서 에러를 분석하면서 하나씩 변경해 보면서 처음에 설정한 setUsePersist(true)가 올바른 방식임을 알게 되었다. 제대로 된 사용 방식을 이해하기 위해 정리해 보고자 한다. 일단 나는 Spring Batch의 Writer를 JpaItemWriter를 사용해서 처리했다.setUsePersist의 설정에 따라 “pe..