Spring Formatter
·
스프링 프레임워크
Formatter주로 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용된다. Formatter는 ConversionService와 비슷한 목적을 가지지만 문자열을 객체로 변환하거나 객체를 문자열로 변환하는 과정에서 포맷팅을 세밀하게 제어할 수 있다. 객체를 특정한 포맷에 맞춰서 문자로 출력하는 기능에 특화된 것이 Formatter이다.Converter 보다 조금 더 세부적인 기능이라고 생각하면 된다. 공식문서 Spring Field Formatting :: Spring FrameworkAs discussed in the previous section, core.convert is a general-purpose type conversion system. It provides a unified Co..
ConversionService
·
스프링 프레임워크
ConversionServiceSpring은 Converter를 모아서 편리하게 관리하고 사용할 수 있게 해주는 기능을 제공한다. 이것이 ConversionService이다. ConversionService 인터페이스canConvert( ) 메서드로 Convert 가능 여부를 확인한다. convert( ) 메서드로 실제 변환을 수행한다. DefaultConversionServiceSpring의 표준 ConversionService로 기본 제공 Converter와 확장 가능성을 통해 다양한 타입 변환을 유연하게 처리할 수 있도록 지원한다. ConversionService를 구현한 구현체이다. ConverterRegistry에 다양한 Converter를 등록한다. ConverterRegistry는 Conve..
TypeConverter
·
스프링 프레임워크
타입 변환Spring에서 객체의 타입을 서로 변환하는 데 사용되는 인터페이스로 Spring의 데이터 바인딩 과정에서 문자열을 특정 객체로 변환하거나 하나의 객체 타입을 다른 타입으로 변환할 때 사용한다. 💡 참고문자를 숫자로, 숫자를 문자로 변환하는 등 Web Application을 만들다보면 Type을 변환해야 하는 경우가 많이 발생한다. 문자열을 숫자로HttpServeltRequest를 숫자로 변환예시@Slf4j@RestControllerpublic class TypeConverterController { @GetMapping("/param") public void param(HttpServletRequest request) { // 조회시 : String Str..
WebMvcConfigure
·
스프링 프레임워크
WebMvcConfigureSpring MVC의 설정을 사용자 정의할 수 있도록 제공되는 인터페이스이다. 이것을 구현하여 설정을 확장하거나 커스터마이징할 수 있다. WebMvcConfigurer의 코드public interface WebMvcConfigurer { default void configurePathMatch(PathMatchConfigurer configurer) { } default void configureContentNegotiation(ContentNegotiationConfigurer configurer) { } default void configureAsyncSupport(AsyncSupportConfigurer configurer) { } d..
ArgumentResolver
·
스프링 프레임워크
HandlerAdapterSpring MVC에서 HTTP 요청을 컨트롤러 메서드에 매핑하고 실행하는 핵심 구성 요소이다. 클라이언트 요청에 대한 적절한 컨트롤러의 메서드와 연결한 후 이 메서드를 호출하여 결과를 반환하는 역할을 수행한다. Spring MVC 구조에서 메시지 컨버터는 어디에?Handler를 호출하기 위해 요청 바디 메시지의 내용을 메시지 컨버터를 통해 변환 후 파라미터 값에 전달해야한다. HandlerAdapter와 Handler 사이에서 어떤 일이 일어난다. ArgumentResolver @RequestMapping 을 처리하는 HandlerAdapter 구현체인 RequestMappingHandlerAdapter로 동작의 예시를 보면 다음과 같다. RequestMappingHandler..
HttpMessageConverter
·
스프링 프레임워크
HttpMessageConverterView를 응답하는 것이 아닌, Rest API(HTTP API)로 JSON, TEXT, XML 등의 데이터를 응답 Message Body에 직접 입력하는 경우 HttppMessageConverter를 사용한다. 💡 참고1. SSR → @Controller + View Template 를 조합해 서버측에서 UI를 동적으로 만든다.2. CSR → @RestController + Data 를 조합해 클라이언트 측에서 화면을 동적으로 그린다.3. 실제로 두가지 기술이 함께 사용되는 경우가 많다. HttpMessageConverter 동작 순서HttpMessageConverter의 동작 순서는 위의 그림과 같다. HTTP 응답 메시지 Body에 데이터를 직접 입력 후 반환한..
Spring의 MVC의 구조
·
스프링 프레임워크
Spring MVC 구조Spring은 MVC 패턴에 프론트 컨트롤러 패턴, 어댑터 패턴이 적용된 구조를 가지고 있다. Spring MVC 구조 흐름실행 순서는 다음과 같다.Client로 부터 HTTP 요청(request)를 받는다.Handler 조회Handler Mapping을 통해 요청 URL에 Mapping된 Handler(Controller)를 조회Handler를 처리한 Adapter 조회Handler를 처리할 수 있는 Handler Adapter 조회Handler Adapter 실행알맞은 어댑터가 존재한다면 Handler Adapter에게 요청을 위임한다.Handler 실행(호출)Handler Adapter가 실제 Handler를 호출하여 실행 및 결과 반환Model And View 반환(retu..
프론트 컨트롤러 패턴와 어댑터 패턴
·
스프링 프레임워크
MVC 패턴의 문제점MVC 패턴을 적용해서 View 영역은 Model에서 데이터를 참조하여 화면을 그리는 역할만 수행하면 됐다. 하지만 Controller 에 해당하는 부분은 여전히 문제를 가지고 있다. Contorller의 문제점dispacher.forward(request, response) View로 이동하는 forward가 항상 중복 호출된다.String path = "/WEB-INF/views/new-form.jsp" View의 path 입력을 중복 작업한다.jsp 파일의 경로 혹은 이름이 바뀌면 적용된 코드 전부가 변경되어야 한다.JSP 이외의 확장자를 사용하려면 전체가 변경되어야 한다.HttpServletResponse 객체를 사용하는 경우가 적다.(JSP에서 모두 해결하기 때문에)공통 기능..
MVC 패턴
·
스프링 프레임워크
MVC 패턴 개요MVC 패턴은 Servlet이나 JSP 만으로 비즈니스 로직과 View Rendering 까지 모두 처리하면 너무 많은 역할을 하게 되고 유지보수가 굉장히 어려워져서(책임이 너무 많음) 고안된 패턴이다. Web Application은 일반적으로 MVC(Model View Controller) 패턴을 사용한다. MVC패턴을 적용하지 않은 Servlet 예시@WebServlet("/hello-world")public class HelloWorldServlet extends HttpServlet { // User 저장소 private UserRepository repository = new UserRepository(); public HelloWorldServlet() ..
Template Engine이란
·
스프링 프레임워크
Template EngineTemplate Engine은 동적인 웹 페이지를 생성하기 위해 사용되는 도구이며 템플릿을 기반으로 정적인 부분과 동적인 데이터를 결합하여 HTML, XML 등의 문서를 생성하는 역할을 수행한다. 이것으로 흔히 말하는 UI(User Interface)를 만들며, SSR에 사용된다.  템플릿 엔진이 나온 이유자바 코드로 HTML을 만드는 것이 아닌 HTML 문서에 동적으로 변경해야 하는 부분만 자바 코드를 넣을 수 있다면 더 편리하다. 대표적인 템플릿 엔진ThymeleafSpring과 통합이 잘 되어있다.다양한 기능을 포함하고 있다.JSP(Java Server Pages)예전에 많이 사용했으나, 현재 안 쓰는 추세이다.