Framework

개요웹 애플리케이션을 개발하다 보면 컨트롤러에서 반복적으로 수행하는 작업들이 있습니다. 헤더에서 토큰을 꺼내서 파싱쿠키나 세션에서 사용자 정보 가져오기특정 헤더 값을 객체로 변환하기특히 스프링 시큐리티를 사용할 때, 인증된 사용자 정보가 SecurityContext의 Principal에 담기는데, 이를 꺼내는 작업도 매번 반복됩니다. 이런 코드가 모든 컨트롤러 메서드마다 반복된다면 코드 중복이 심해지고 유지보수가 어려워집니다. 이때 사용할 수 있는 것이 바로 HandlerMethodArgumentResolver입니다. 오늘은 이 HandlerMethodArgumentResolver에 대해서 공부한 내용을 정리하고자 합니다. HandlerMethodArgumentResolver란❓HandlerMeth..
·Framework/Next.js
개요Next.js(App Router)로 개발을 하다 보면 Context API, Query Client, 또는 Theme Provider를 설정할 때 한 번쯤 이런 에러를 마주치게 됩니다. "Error: Next.js Server Components do not support Context." 보통 layout.tsx에 바로 Provider를 작성하려 할 때 발생합니다. 이번 글에서는 왜 layout.tsx를 별도의 Providers 컴포넌트로 감싸야 하는지, 그 구조적 이유와 이점에 대해서 공부한 내용을 정리해보고자 합니다. 왜 에러가 날까❓Next.js의 App Router는 기본적으로 모든 컴포넌트를 서버 컴포넌트(Server Components)로 간주합니다. 하지만 React Context,..
개요웹 개발을 하다 보면 프론트엔드에서 서버로 데이터를 보내고 받는 일이 일상적입니다. 그런데 우리가 JavaScript 객체로 다루던 데이터가 어떻게 서버까지 전달되고, 다시 객체로 돌아오는 걸까요? 이 과정의 핵심에는 직렬화(Serialization)와 역직렬화(Deserialization)라는 개념이 있습니다. 이번 글에서는 직렬화의 필요성과 어떻게 직렬화가 되는지에 대해서 정리하고자 합니다. 프론트엔드에서의 객체 관리프론트엔드에서의 객체 관리프론트엔드에서는 HTTP 요청을 다음과 같이 객체 형태로 관리합니다.const httpRequestMessage = { headers: { 'Content-Type': 'application/json', 'Content-Leng..
·Framework/JPA
개요JPA를 사용하다 보면 게시글과 댓글, 주문과 주문 상품 같은 1:N 관계를 조회해야 할 일이 정말 많습니다. 하지만 DB에서 조인(Join)을 하면 결과는 계층적 구조가 아닌 언제나 평면적입니다. 오늘은 이 간극을 메우기 위해 우리가 흔히 하던 'Map 노가다'를 버리고, QueryDSL의 transform을 사용해 데이터를 가져오는 방법을 알아보겠습니다.즉, 연관관계가 있는 데이터를 조회할 때 평면적인(flat) 결과를 계층적인(hierarchical) 구조로 변환해야 하는 경우가 자주 발생하는데, Map을 통한 수동 변환 작업은 번거롭고 실수하기 쉽습니다. QueryDSL의 transform은 바로 이 문제를 해결해줍니다.이번 글에서는 회사에서 실제로 겪었던 사례를 바탕으로 QueryDSL의 t..
지누박
'Framework' 카테고리의 글 목록