![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cC1PmQ/btrSwCTGfMN/05wvasJmctmGnKPBHkZvhk/img.png)
Property based creator 가 생성되는 이유 저번 포스팅까지 @NoArgsConstructor 가 Request body 의 DTO 에 포함되지도 않았는데 JSON 데이터가 Java 객체로 올바르게 변환될 수 있는 이유가 Property based creator 덕분이라는 사실을 발견했다. 오늘 포스팅에서는 Property based creator 가 언제 생성되고 언제 생성되지 않는지에 대해 알아본다. 먼저, Jackson 에서 PropertyBasedCreator 를 생성하는 부분이 어디인지를 확인하기 위해서 디버깅을 계속 step into 를 통해 들어가보았다. 너무 길어서 캡처는 중간부분을 생략하고 처음 진입과 마지막 부분만 남기겠다. 결국 BeanDesereializerBase 라..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cWzI2v/btrSqNIkbRR/aLzuuiOn3XWOKKBW2H8iE1/img.png)
기수 정렬을 구현하던 중, Queue 로 이루어진 배열을 생성하는 과정에서 NullPointerException 이 발생해서 왜 그런지 찾아보다가 이 포스트를 작성하게 되었다. Java 의 데이터 타입 원시 타입 (Primitive type) 과 참조형 타입 (Reference type) Java의 변수들은 두 가지 타입 중 하나를 갖는다. 1. 원시 타입: 아래 표는 원시 타입의 종류들을 설명한다. 아래로 갈수록 더 많은 데이터를 담을 수 있는 타입이다. 이름 비트 수 초기화 syntax 선언만 했을 시 초기 값 byte 8 byte b = 100; 0 short 16 short s = 30,000; 0 int 32 int i = 100,000,000; 0 long 64 long l = 100,000,..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cCyRdW/btrSs00GaP0/ZJKf7JwYKe5PHf8NkJTZ9K/img.png)
무언가 다른 방식 자, 이전 포스트에서 디폴트 생성자가 없는 경우 deserializeFromObjectUsingNonDefault() 를 호출한다는 사실까지 알아보았다. 이번 포스트에서는 이 메서드가 어떻게 동작하는지, 어떤 메서드들을 호출하는지를 알아본다. 우선 JsonDeserializer 라는 역직렬화를 담당하는 클래스 (이름 상으로는) 객체의 이름을 delegateDeser 로 하고 _delegateDeserializer() 를 할당해주는 것을 볼 수 있다. 그리고 바로 밑에서 이것이 null 인지를 확인한다. _delegateDeserializer() 는 무엇이고, null 인 경우와 아닌 경우의 차이는 무엇일까? 우선 Javadoc 에 쓰여 있는 _delegateDeserializer() 의..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dJAiEY/btrSpkNeZb2/NhaCT8fiodbWZChbQRDsX0/img.png)
직렬화 & 역직렬화 Serialization and Deserialization 아래는 스프링 부트 컨트롤러에서 API 를 정의할 때 흔히 볼 수 있는 모습이다: 이 API 를 Swagger 를 사용해서 테스트할 때, 다음과 같이 Request body 부분에 JSON 형태의 정보를 넣어준다. 이렇게 클라이언트로부터 받은 Request body, JSON 정보를 자바 객체 (여기서는 UserLoginRequest) 로 변환하는 과정을 역직렬화 (Deserialization) 라고 부른다. 직렬화 (Serialization) 는 그 반대인 자바 객체를 JSON 형태로 변환하는 과정을 말한다. 역직렬화 시 목적지인 DTO 객체를 생성하여 클라이언트로부터 JSON 형태로 넘어온 데이터를 넣어주는데, 원칙 상으..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ocafI/btrRw9Yt8H2/mKKL5T7E2SKTOdMvpcRc00/img.png)
Enums 는 프로그램 내에서 절대 변하지 않을 값들을 모아 놓은 특별한 '클래스' 이다. - W3Schools - 로또 당첨 통계를 내는 프로그램 구현 문제의 풀이 과정에서 enum 을 활용하라는 조건이 있었다. 이전에도 enum 을 접해본 적은 있었지만, 적극적으로 구현에 활용해본 것은 처음이었고, 활용 과정에서 적재적소에 enum 을 최대한으로 활용하기 위해서는 용도와 목적을 공부해야겠다는 필요성을 느껴 포스트를 작성하게 되었다. 1. Enum 의 용도와 목적 위에서 정의했듯이 일반 Class 와 비슷한 듯 다른 enum 을 이해하기 위해 일반 Class 와 enum 의 차이점을 정리해보았다. 구분 일반 Class enum type Class 멤버 변수의 접근 제어자 public, private, ..
- Total
- Today
- Yesterday
- 인증/인가
- LazyInitializationException
- JOIN FETCH
- DeSerialization
- N+1
- JPA
- Spring Boot
- 알고리즘
- gitlab
- 실시간데이터
- 도커
- 프로그래머스
- 코테
- json web token
- 깃랩
- Java Data Types
- 역직렬화
- spring
- @RequestBody
- DTO
- JPQL
- docker
- 기지국 설치
- ci/cd
- 지연 로딩
- Jackson
- Firebase
- google cloud
- 가상 서버
- FCM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |