본문 바로가기

스프링7

[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.
[Spring] ResultSet next()를 왜 사용할까? ResultSet 순수 JDBC를 활용하여 쿼리문을 정의한 다음, 지정된 쿼리문을 실행하게 된다면 자연스럽게 쿼리문 조건에 맞는 값이 반환될 것이라는 것은 코드를 짜보지 않아도 대략적인 그림은 머릿속에서 그려질 수 있다. 하지만 어떻게 데이터를 받는지에 대해서 명확하게 알지 못한다면, 데이터를 어떤 방식으로 처리해야 하는지에 대한 문제도 해결하기 어려울 수 있다. 그래서 순수 JDBC를 사용할 때 ResultSet을 어떻게 활용하길래 데이터를 받아올 수 있는지 그리고 next()를 사용해서 데이터 체크를 왜 하는지, 어떻게 동작하는지에 대해서 알아보려고 한다. ResultSet이란? public interface ResultSet extends Wrapper, AutoCloseable ResultSet은.. 2023. 9. 7.
[Spring] Hikari pool - 1 [오류에 대해서 어떤 생각을 가지고 해결을 해볼 수 있었을까?] Hikari pool - 1 time out 게시판 프로젝트를 진행하면서 발생된 문제점이다. 해당 문제점에 대해서 깊게 고민을 하지 않고 단순 개발에 우선순위를 두다 보니 거슬리는 데도 잠깐 동안은 무시했었다. 하지만 코드를 정상적으로 작성했음에도 불구하고 이 에러는 사라지지 않았다. 따라서 나는 앞서 가정을 했었다. 1. 코드가 비정상적으로 동작하기 때문에 해당 오류가 뜰 수 있을 것 같다. 2. 타임 아웃이 발생되니 SQL 쿼리문에서 문제가 발생할 수 있을 것 같다. 하지만 1번을 해결하고 난 뒤에도 여전히 오류는 지속적으로 찍히고 있었으며, 2번을 면밀히 바라보려고 노력했다. 2번을 해결하기 위해서 비즈니스 로직을 두 번 실행하게 되는 것을 redirect로 변경하여 해당 포스트를 다시 가지고 오지.. 2023. 9. 2.