본문 바로가기

분류 전체보기43

[Spring] Jackson의 @JsonDeserialize가 항상 기본 생성자를 생성할까? Jackson jackson 라이브러리는 스프링 프레임워크가 기본적으로 제공해 주는 직렬화 및 역직렬화를 도와주는 라이브러리이다.프로젝트 개발을 진행하면서, Redis에 적재된 JSON 타입의 값을 직렬화 및 역직렬화할 필요성이 있게 되었다. 그래서 Jackson 라이브러리를 활용하여 objectMapper를 활용해서 역직렬화 과정을 수행하던 중. 논리적으로 맞지 않은 것 같은 동작을 목격했다. 다른 분들의 활용 예시를 보면서, @JsonDeserializer가 기본 생성자를 생성한다는 글을 보았다. 그러나 이것은 반은 부족한 설명이라 느끼게 되어 위 제목에 대한 고찰을 시작해 보려고 한다. @JsonDeserialize 간단하게 어노테이션에 대해서 알고만 넘어가자면 이 어노테이션은 역직렬화 시, usi.. 2024. 7. 24.
[Spring] 테스트 클래스는 빈으로 등록이 될까? [ 그러면 nested-class 들은?] 스프링은 테스트 클래스를 빈으로 등록을 할까..? 스프링에서 unit test, integration test를 진행하고자 할 때, test 폴더 계층에서 테스트를 보통 진행한다. 그러다 보면 자연스럽게 application context 등록 과정에 대해서 고찰을 하게 되고, component scan, 공식문서등 여러 정보와 설명들을 찾아보게 된다. 그러나 항상 보는 글 그리고 공식문서 까지도, 스프링에 비교적 익숙하지 않은 사용자들은 이해하기 어려운 부분이 다소 포함이 되어 있고, 이 빈 등록 과정에 대해서 추상적으로 설명되어 있는 글들을 마주하곤 해서, 이번 주제는 스프링에서 테스트할 때 '테스트 클래스'를 빈으로 등록할까를 시작으로 끝에는 중첩클래스(inner class, static class.. 2024. 5. 2.
[Java] SingleThread, MultiThread[ run()을 바로 호출할 때 start() 대신] Thread Thread의 정의는 한 프로그램 내에서 작업의 주체 단위를 의미합니다. 1:N관계를 가질 수 있기 때문에, 한 프로그램 내에서 여러 thread를 소유할 수 있습니다. start(), run() 생각해 보면, Thread를 만들고, start(), run() 메서드의 차이점을 모르고 Thread를 사용하는 건 말이 안 되기 때문에 주제는 start() 메서드와 run() 메서드는 어떻게 실행되며, 왜 둘의 차이가 발생하는지 작성합니다. 위 사진은 Runnable 인터페이스 입니다. 스레드 프로그래밍을 하기 위해서 Thread 클래스를 상속받거나, Runnable 인터페이스를 구현한다는 것은 알고 있습니다. 하지만 어떤 Article에서는 이것을 이렇게 설명합니다. 1. Thread 클래스를.. 2024. 3. 13.
[프로그래머스] 없어진 기록 찾기 (Lv.3 - select 에 혹시 유실된 데이터를 보려고 하지 않았는지??) SQL https://school.programmers.co.kr/learn/courses/30/lessons/59042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 쿼리 select b.ANIMAL_ID, b.NAME from ANIMAL_INS a right outer join ANIMAL_OUTS b on a.ANIMAL_ID = b.ANIMAL_ID where a.ANIMAL_ID is null order by a.ANIMAL_ID ASC; # ===== 아래는 오답 ====== # 두 쿼리의 차이점은 select 문에 존재. select a.A.. 2024. 2. 24.