본문 바로가기

전체 글44

2024 회고 서론잠시 꿈을 꾼 듯, 한 해의 결승선에 도착해 있었습니다. 여전히 누구보다 빠르지 않았지만 뜻깊은 순간의 연속이었으며, 앞으로의 가능성을 내다볼 수 있었던 소중한 시간들이었습니다. 제법 힘들기도 했습니다. 또 후회하지 않을 결정을 하기도 했습니다. 때론 번복했습니다. 하지만 그럼에도 불구하고, 여전히 행복했습니다. 그리고 여전히 버티며 서 있었습니다.  완벽한 결정이라고 생각했던 순간들은 극히 드물었습니다. 그러나 그 결정에 대해 후회하는 것은 제 자신을 계속 뒤돌아 보게 만들더군요. 그 순간에도 쉼 없이 달렸으며 수 없이 많은 생각들과 걸어온 여정은 결코 가치 없다고 생각하지 않습니다. 언제나 그랬듯이 묵묵히 앞만 바라보며 나아갈 뿐이니까요. '틀린 질문에서 옳은 답이 나올 수 없기 때문이다.' 최민.. 2024. 12. 20.
[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.