반응형 Spring/MVC8 [Spring MVC] 스프링 타입 컨버터와 포맷터(Formatter)정리 1. 도입부 (Introduction)웹 애플리케이션을 개발할 때 클라이언트와 서버가 주고받는 데이터의 기본 형태는 언제나 '문자열(String)'이다. HTTP 요청 파라미터(Query Parameter), HTTP 바디, URL 경로(Path Variable) 모두 서블릿 컨테이너를 거쳐 자바에 들어올 때는 원시 문자열로 인입된다.만약 스프링 MVC와 같은 프레임워크가 없던 시절에 이 문자열을 개발자가 원하는 데이터 타입으로 다루려면 매번 아래와 같은 지루하고 반복적인 변환 로직을 작성해야 했다.// 서블릿 환경에서 요청 파라미터 수동 변환 예시String data = request.getParameter("data");Integer intValue = Integer.valueOf(data); // .. 2026. 5. 28. [Spring Boot] 서블릿 예외 처리부터 @RestControllerAdvice 정리 1. 도입부 (Introduction)웹 애플리케이션을 개발할 때 정상적인 비즈니스 로직을 구현하는 것만큼 치열하게 고민해야 하는 영역이 바로 '예외 처리(Exception Handling)'다. 예외 처리가 제대로 설계되어 있지 않으면 시스템의 내부 스키마나 기밀성이 요구되는 런타임 에러 스택 트레이스가 사용자에게 날것 그대로 노출되어 보안상 치명적인 약점이 될 수 있고, 사용자 경험(UX) 역시 심각하게 훼손된다.오늘날 스프링 부트 환경에서 일하는 백엔드 개발자들은 @RestControllerAdvice나 @ExceptionHandler 같은 정교하게 설계된 도구를 사용하여 예외를 우아하게 잡아낸다. 하지만 이러한 현대적인 추상화 도구들은 모두 순수 자바 서블릿(Servlet) 컨테이너가 제공하는 전.. 2026. 5. 28. [Spring MVC] Bean Validation과 전송 객체(DTO) 분리: 실무형 검증 및 예외 설계 정리 1. 도입부 (Introduction)웹 애플리케이션을 개발할 때 클라이언트로부터 유입되는 입력 데이터 검증(Validation)은 시스템의 안전성과 데이터 무결성을 보장하는 최전선 방어벽이다. 하지만 검증 조건이 늘어날수록 컨트롤러나 비즈니스 레이어는 값의 유무나 크기를 확인하는 지루한 if 분기문으로 가득 차게 된다. 이러한 보일러플레이트 코드는 핵심 비즈니스 로직을 가리고 유지보수를 어렵게 만드는 주범이다.이러한 수동 검증 지옥을 탈출하고 애노테이션 선언만으로 검증 구조를 표준화할 수 있도록 지원하는 자바 기술 표준이 바로 Bean Validation이다. 이번 글에서는 스프링부트 환경에서 Bean Validation의 구동 메커니즘을 심층 분석하고, 실무에서 마주치는 '등록과 수정의 비즈니스 규칙.. 2026. 5. 27. [Spring MVC] 검증(Validation) 정리 : 수동 검증부터 @Validated와 현대적 전역 API 검증까지 1. 도입부 (Introduction)웹 애플리케이션을 개발할 때 가장 중요하면서도 빈번하게 비즈니스 결함이 발생하는 지점이 바로 '입력 데이터 검증'이다. 만약 사용자가 상품 등록 폼에서 가격에 숫자가 아닌 문자를 입력하거나, 필수값을 누락한 채 제출했을 때 서버가 이를 적절히 방지하지 못하면 시스템은 즉각 에러 페이지를 뿜어내며 중단된다.클라이언트 검증(JavaScript 등)은 사용자가 입력을 마치자마자 브라우저단에서 즉각 피드백을 주므로 UX(사용자 경험)가 극대화되지만, 포스트맨(Postman)이나 개발자 도구를 통해 요청값을 쉽게 변조할 수 있어 보안에 극도로 취약하다. 반면 서버 검증은 안전하지만, API나 HTTP 요청이 완전히 서버를 거쳐 돌아와야 하므로 즉각적인 피드백이 부족하다는 아쉬.. 2026. 5. 26. [Spring MVC] 프론트 컨트롤러 패턴 도입부터 어댑터(V5), 로깅, 요청 매핑까지 완벽 정리 1. 도입부웹 애플리케이션 아키텍처가 발전함에 따라 서블릿과 JSP의 역할 분담을 넘어, 수많은 컨트롤러의 공통 관심사를 어떻게 효율적으로 처리할 것인가에 대한 고민이 깊어졌다. 과거 서블릿 기반 mvc 패턴에서는 클라이언트의 요청마다 전용 서블릿을 매핑해 사용했기 때문에 공통 로직 중복과 서블릿 종속성이라는 한계가 존재했다. 이를 해결하기 위해 등장한 혁신적인 디자인 패턴이 바로 프론트 컨트롤러(Front Controller) 패턴이다.오늘날 스프링 MVC의 심장부인 DispatcherServlet이 바로 이 프론트 컨트롤러 패턴의 완성형이다. 서블릿 아키텍처가 어떤 구조적 문제를 거쳐 현대적인 스프링 MVC로 진화했는지 단계별로 파헤쳐본다. [Spring] 역할 분담을 위한 MVC 패턴의 구조와 설계.. 2026. 5. 22. [Spring MVC] 역할 분담을 위한 MVC 패턴의 구조와 설계 1. 도입부 (Introduction)초기 웹 애플리케이션 개발 패러다임은 동적인 HTML 페이지를 빠르게 생성하는 것에 초점이 맞춰져 있었다. 자바 진영에서는 이를 위해 서블릿(Servlet)과 JSP(Java Server Pages)라는 강력한 무기를 제공했지만, 서비스의 규모가 커짐에 따라 단일 계층에 모든 로직이 집중되는 비대화 현상이 발생했다.코드가 비대해질수록 가독성은 떨어지고 유지보수는 불가능에 가까워진다. 이러한 아키텍처적 위기를 극복하기 위해 도입된 것이 바로 MVC(Model-View-Controller) 패턴이다. 이번 글에서는 서블릿과 JSP가 가졌던 태생적 한계를 해부하고, MVC 패턴의 구조와 실제 자바 코드를 통한 적용법, 그리고 프레임워크 수준에서 해결해야 하는 순수 MVC .. 2026. 5. 21. 이전 1 2 다음 반응형