Spring
[Spring] 2. jackson을 이용한 data binding 이해하기(생성자, constructor)
[Spring] 2. jackson을 이용한 data binding 이해하기(생성자, constructor)
2022.04.26저번 편에서는 getter/setter 에 대한 직렬화, 역직렬화가 어떻게 이루어지는지 알아보았습니다. 관련 내용을 아직 보지 않으셨다면 먼저 저번 편 글을 보시고 이번 게시글을 읽으시는 것을 추천드립니다. https://beaniejoy.tistory.com/75 [Spring] 1. jackson을 이용한 data binding 이해하기(ObjectMapper, field & getter/setter) Spring Framework를 이용해 web application을 개발하다보면 request - POJO 객체 - response로 data가 흘러간다는 것은 누구나 다 알게 됩니다. 최근에는 web application에 들어오고 나가는 data를 대부분 JSON.. beaniejoy.tistor..
[Spring] 1. jackson을 이용한 data binding 이해하기(ObjectMapper, field & getter/setter)
[Spring] 1. jackson을 이용한 data binding 이해하기(ObjectMapper, field & getter/setter)
2022.04.01Spring Framework를 이용해 web application을 개발하다보면 request - POJO 객체 - response로 data가 흘러간다는 것은 누구나 다 알게 됩니다. 최근에는 web application에 들어오고 나가는 data를 대부분 JSON 포맷으로 처리하고 있습니다. 그러면 이러한 JSON 데이터를 application 내의 POJO 객체로 변환하고 처리된 데이터를 다시 JSON 형태로 변환해서 내보내야 하는데 이러한 일들을 누가 하는 것일까요. Spring에서는 보편적으로 이러한 일을 jackson 라이브러리가 맡아서 작업하고 있습니다. (Spring Boot를 사용하면 jackson 라이브러리는 기본적으로 내장되어 data binding에 사용되고 있습니다.) jacks..
Kotlin, Spring Validation 이용한 입력 데이터 유효성 검증
Kotlin, Spring Validation 이용한 입력 데이터 유효성 검증
2022.03.03어떤 요청에 대한 입력값에 대해서 코드상으로 하나하나 유효성 검증을 하는 것은 상당히 번거로운 일입니다. 예를들어, 어떤 날짜 입력이 주어졌는데 제대로된 날짜 형식으로 입력했는지 검증하는 코드를 로직상에 추가했다면 비즈니스 로직에 집중해야 될 코드가 오염될 수 있습니다. Spring에서 제공하는 Validation은 이와 같은 입력값에 대한 유효성 검증을 Controller단과 별개로 진행해 간편하게 진행할 수 있도록 기능을 제공하고 있습니다. Spring Validation에 대한 내용을 정리해보고자 합니다. 📌 1. gradle 설정 implementation 'org.springframework.boot:spring-boot-starter-validation' Spring Boot 2.3 버전 부터..
[JPA] 변경감지 개념과 @Transactional 위치에 따른 변경감지 사용
[JPA] 변경감지 개념과 @Transactional 위치에 따른 변경감지 사용
2022.02.15데이터 변경 로직에서 JPA 변경감지 기능을 자주 접할 수 있는데요. JPA 변경감지에 대해서 짤막한 정리와 함께 @Transactional과 같이 사용할 때 어떠한 점을 유의해야 되는지에 대해서 정리해보고자 합니다. 📌 데이터 변경을 위한 기본 로직 DB 테이블에 저장되어 있는 데이터의 정보를 수정하기 위해 update 하는 로직을 개발하고자 한다면 다음과 같은 논리적 절차를 거치게 될 것입니다. 트랜잭션 시작 변경하고자 하는 데이터의 id(주로 primary key)를 통한 where 조회 조회한 데이터에 수정할 내용들로 교체 update 처리 트랜잭션 커밋 물론 DB 콘솔 상에서는 변경할 데이터의 id를 가지고 있다면 update 쿼리하나로 바로 수정하면 됩니다. 하지만 어플리케이션단에서는 변경할 ..
[JUnit] Test 환경과 Dev 환경 분리(profile 활용한 DB 환경 분리, JUnit5)
[JUnit] Test 환경과 Dev 환경 분리(profile 활용한 DB 환경 분리, JUnit5)
2022.01.28직전 글에서 단위, 통합테스트 한꺼번에 진행을 위한 구성에 대해서 다루었습니다. 글 작성하고 더 알아보니 잘못된 내용들이 조금 있었더라구요. 이번 글에서는 저번 글에서의 잘못된 내용을 수정하면서 Test 환경과 Dev 환경 분리에 대해서 한 번 정리해보려 합니다. 📌 테스트, 개발 환경 분리를 위한 DB 구성 dependencies { //... runtimeOnly 'mysql:mysql-connector-java' runtimeOnly 'com.h2database:h2' //... } 저는 테스트 환경과 개발 환경 분리를 위한 구성을 해보고자 각각의 환경에서 사용되는 DB를 다르게 설정하였습니다. 저번 글에서는 테스트, 개발 환경 모두 embedded DB(h2)를 사용하다 보니 혼용되어 사용되거나 ..
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
[JUnit] 단위, 통합 테스트 한꺼번에 진행하기 (SpringBootTest, WebMvcTest)
2022.01.25JPA 관련 테스트 어플리케이션을 개발하다가 JUnit을 사용하여 간단한 테스트 코드를 작성하게 되었습니다. 매번 어플리케이션 실행 후 Postman으로 api 확인하는 것도 귀찮더라구요. 개발 진행 후에 실제로 api가 잘 작동하는지 수시로, 빠르게 확인해보고자 JUnit을 도입하게 되었습니다. 여기서는 간단한 예시를 가지고 Controller 단의 단위테스트를 위한 구성과 Service에서 실제 DB까지 잘 적용이 되는지 확인해보고자 Service 단에서는 통합테스트로 구성하면서 겪은 내용들을 기록하고자 합니다. 📌 1. 기본적인 구성 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' impleme..