Spring Framework/Web on Servlet Stack(51)
-
Message Converters
Spring MVC의 메시지 컨버터(Message Converters)Spring MVC는 메시지 컨버터(HttpMessageConverter)를 사용하여 HTTP 요청과 응답을 Java 객체로 변환하거나, Java 객체를 HTTP 요청과 응답으로 변환합니다. 이 기능을 통해 Spring MVC는 REST API와 상호작용할 때 JSON, XML, HTML 등 다양한 콘텐츠 타입을 자동으로 처리할 수 있습니다.메시지 컨버터는 Java 객체를 HTTP 응답 본문으로 직렬화하거나(예: Java 객체를 JSON으로 변환), HTTP 요청 본문을 Java 객체로 역직렬화(예: JSON 데이터를 Java 객체로 변환)하는 역할을 합니다.메시지 컨버터 커스터마이징Spring MVC에서는 WebMvcConfigure..
2024.10.15 -
Content Types
Spring MVC (Model-View-Controller)은 요청에 따라 다양한 콘텐츠 타입을 처리할 수 있는 유연한 메커니즘을 제공합니다. 이를 Content Negotiation(콘텐츠 협상)이라고 하며, 클라이언트의 요청에 따른 응답 형식을 결정하는 데 사용됩니다.Content Negotiation이란?Content negotiation은 클라이언트가 선호하는 응답 형식을 요청에 명시하면, 서버가 그에 따라 적절한 응답 형식을 선택하는 기능입니다.Spring MVC에서 content negotiation은 기본적으로 클라이언트가 보내는 Accept 헤더에 의해 주도됩니다. 하지만, URL 경로 확장자(예: /users.json), 쿼리 파라미터(예: /users?format=json), 또는 특..
2024.10.15 -
Interceptors
Spring MVC에서 Interceptor는 incoming HTTP 요청과 outgoing 응답에 대해 로직을 적용할 수 있는 강력한 메커니즘입니다. 이를 통해 컨트롤러에 요청이 도달하기 전에 요청을 가로채거나, 컨트롤러에서 응답을 처리한 후 추가 로직을 수행할 수 있습니다. Interceptor는 주로 로깅, 감사(auditing), 요청/응답 객체를 수정하는 작업에 사용됩니다.1. Interceptor의 작동 방식Interceptor는 Servlet Filter와 비슷하게 작동하지만, Spring Web Application Context와 더 밀접하게 통합됩니다. Interceptor는 전역적으로 등록되어 모든 요청에 적용되거나, 특정 URL 패턴에만 제한적으로 적용할 수 있습니다.주요 개념:P..
2024.10.14 -
Validation
Spring MVC에서 validation(검증)은 컨트롤러에서 데이터를 처리하기 전에 데이터의 정확성을 보장하는 데 중요한 역할을 합니다. 기본적으로 Spring MVC는 Bean Validation(JSR-303/JSR-380)을 통합하여 사용하며, Hibernate Validator가 기본 제공자로 사용됩니다. Bean Validation이 클래스패스에 존재하는 경우, Spring은 자동으로 LocalValidatorFactoryBean을 글로벌 Validator로 등록하여 컨트롤러 메서드에서 @Valid와 @Validated 애노테이션을 사용할 수 있게 해줍니다.디폴트 Validation 설정Spring MVC에서 @Valid 또는 @Validated를 사용하면, 해당 메서드 아규먼트에 대해 자동..
2024.10.14 -
Type Conversion
Spring MVC는 다양한 숫자 및 날짜 타입에 대한 기본적인 formatting 지원을 제공합니다. 또한 @NumberFormat 및 @DateTimeFormat 애노테이션을 사용하여 필드의 포맷을 커스터마이즈할 수 있습니다. 이러한 타입 변환 시스템은 폼, JSON 응답, 기타 요청/응답 데이터에서 객체와 문자열 간의 변환을 쉽게 만들어줍니다. 여기서는 Spring MVC에서 이 기능이 어떻게 작동하는지, 커스텀 컨버터와 포매터를 등록하는 방법, 그리고 반응형 스택(Spring WebFlux)에서의 동등한 기능에 대해 설명하겠습니다.Spring MVC의 디퐅트 타입 변환Spring MVC는 기본적으로 다양한 숫자 및 날짜 타입을 처리하기 위한 포매터를 설치합니다. 이 포매터는 HTML 폼에서 사용되..
2024.10.14 -
MVC Config API
WebMvcConfigurer와 WebFluxConfigurer의 상세 설명Spring MVC에서, 기본 MVC 구성을 커스터마이즈하려면 WebMvcConfigurer 인터페이스를 구현할 수 있습니다. 이는 Spring의 Java 기반 설정 모델의 일부로, 뷰 해석기, 리소스 핸들러, 인터셉터 등을 포함한 특정 구성 요소를 설정할 수 있습니다. 이 방법은 매우 유연하고 모듈화되어 있으며, 필요한 부분만 재정의할 수 있고, 나머지는 Spring의 기본 동작에 의존할 수 있습니다.Spring MVC에서의 WebMvcConfigurerWebMvcConfigurer 개요WebMvcConfigurer는 Spring MVC 구성을 커스터마이즈하기 위한 콜백 메서드 집합을 제공하는 인터페이스입니다. 이 인터페이스를 ..
2024.10.14