Framework/Spring\Spring boot

개요웹 애플리케이션을 개발하다 보면 컨트롤러에서 반복적으로 수행하는 작업들이 있습니다. 헤더에서 토큰을 꺼내서 파싱쿠키나 세션에서 사용자 정보 가져오기특정 헤더 값을 객체로 변환하기특히 스프링 시큐리티를 사용할 때, 인증된 사용자 정보가 SecurityContext의 Principal에 담기는데, 이를 꺼내는 작업도 매번 반복됩니다. 이런 코드가 모든 컨트롤러 메서드마다 반복된다면 코드 중복이 심해지고 유지보수가 어려워집니다. 이때 사용할 수 있는 것이 바로 HandlerMethodArgumentResolver입니다. 오늘은 이 HandlerMethodArgumentResolver에 대해서 공부한 내용을 정리하고자 합니다. HandlerMethodArgumentResolver란❓HandlerMeth..
개요웹 개발을 하다 보면 프론트엔드에서 서버로 데이터를 보내고 받는 일이 일상적입니다. 그런데 우리가 JavaScript 객체로 다루던 데이터가 어떻게 서버까지 전달되고, 다시 객체로 돌아오는 걸까요? 이 과정의 핵심에는 직렬화(Serialization)와 역직렬화(Deserialization)라는 개념이 있습니다. 이번 글에서는 직렬화의 필요성과 어떻게 직렬화가 되는지에 대해서 정리하고자 합니다. 프론트엔드에서의 객체 관리프론트엔드에서의 객체 관리프론트엔드에서는 HTTP 요청을 다음과 같이 객체 형태로 관리합니다.const httpRequestMessage = { headers: { 'Content-Type': 'application/json', 'Content-Leng..
Spring에서 외부 API를 호출할 때 사용되는 방법은 RestTemplate, WebClient, RestClient, OpenFeign 등이 있습니다. 이번 글에서는 이 중 RestTemplate에 대한 공부한 내용을 정리하고자 합니다. 비록 Spring 공식 문서에서는 WebClient 사용을 지향하지만, 여전히 많은 레거시 시스템과 프로젝트의 표준으로 자리 잡고 있는 RestTemplate에 대해 다뤄보고자 합니다. RestTemplate란❓RestTemplate은 Spring 3.0부터 제공된 동기식 HTTP 클라이언트입니다. 즉, HTTP 통신을 위한 도구로 RESTful API 웹 서비스와의 상호작용을 쉽게 외부 도메인에서 데이터를 가져오거나 전송할 때 사용되는 스프링 프레임워크의 클래스를..
개요Spring 기반의 프로젝트를 살펴보면, Service와 ServiceImpl로 나누어진 구조를 자주 접하게 됩니다. 그런데 저는 개인 프로젝트나 팀 프로젝트를 진행할 때에는 별도로 ServiceImpl을 두지 않고 하나의 Service 클래스에서 비즈니스 로직을 구현하곤 했습니다. 하지만 실제 업무에서 코드를 분석하다 보니, 많은 프로젝트들이 Service와 ServiceImpl을 분리하는 방식을 택하고 있었습니다. 이 글에서는 왜 Service와 ServiceImpl을 분리하는지, 이러한 구조를 채택한 이유에 대해서 정리하고자 합니다. 분리하는 이유는❓1. 유지보수성Service는 인터페이스로 정의하고, ServiceImpl에서 실제 구현을 담당하는 방식은 결합도를 낮추고 변경에 유연하게 대응할..
지누박
'Framework/Spring\Spring boot' 카테고리의 글 목록