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)예전에 많이 사용했으나, 현재 안 쓰는 추세이다.
스프링 프레임워크와 스프링 부트
·
스프링 프레임워크
스프링 프레임워크스프링 프레임워크는 Java Application Framework로 엔터프라이즈 애플리케이션 개발에 주로 사용된다. 엔터프라이즈 애플리케이션은 대규모로 복잡한 비즈니스 프로세스와 데이터를 처리하는 애플리케이션을 뜻한다. Spring Framework 등장 배경대형 쇼핑몰 시스템(엔터프라이즈 애플리케이션)을 만든다고 해보자 이 시스템은 다음과 같은 기능들이 필요할 것이다.수백만 명의 고객이 동시에 상품을 검색하고, 장바구니에 담고, 결제를 시도한다.이러한 시스템은 많은 사용자의 요청을 한꺼번에 처리해야 한다.따라서 서버의 성능, 신뢰성, 보안이 아주 중요하다.하지만 이러한 요소들을 모두 고려하면서 비즈니스 로직을 개발하는 것은 쉽지 않다. 만약 누군가가 이러한 복잡한 부분을 해결해 주는 ..
프레임워크와 라이브러리
·
용어 모음집
프레임워크프레임워크는 소프트웨어 개발을 간편하게 만들기 위한 소프트웨어 개발 환경이다.  프레임(frame) 워크(work)란 단어에서도 알 수 있듯이 일하기 위한 틀을 제공한다. 개발자는 해당 틀에서 일을 해야 한다. 장점개발 프로젝트에 일관된 구조를 제공하여 코드의 일관성과 가독성을 높여주며 협업이 편해진다.기본적으로 필요한 기능과 도구를 제공하여 개발자들이 핵심 비즈니스 로직에 집중할 수 있다.보안 관련 기능을 기본적으로 제공하여, 보안 취약점을 방지하는 데 도움을 준다.통합된 테스트 환경과 도구를 제공하여 테스트를 쉽게 작성하고 실행할 수 있다.인기 있는 프레임워크는 방대한 커뮤티티 지원을 받으며, 다양한 문서를 활용할 수 있다.단점프레임워크는 복잡한 구조를 가지기 때문에, 처음 익히는 데 시간이..
WAS의 Thread와 MultiThread 이해
·
Web
ThreadThread란 프로세스 내부에서 실행되는 작은 작업 단위로 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 말한다. Java에서 main method를 실행하면 main이라는 이름을 가진 Thread가 실행되며 하나의 Thread는 한번에 하나의 코드 라인만 수행한다. 만약 동시 처리가 필요하다면 Thread를 추가적으로 생성 해야한다. Servlet 객체의 호출클라이언트에서 Request가 전달되면 Thread가 Servlet 객체를 호출한다. 그림에서 Example Servlet을 호출하는 무언가는(그림에서 물음표) Thread이다. Single Thead일 때 단일 요청단일 Thread에 요청이 하나일 때 동작 과정은 다음과 같다.클라이언트 요청 및 TCP/IP 연결Thread 할당..
Servlet
·
Web
ServletServlet은 HTTP 프로토콜 기반 요청 및 응답을 처리하는데 사용된다. JAVA에서 Servlet은 HttpServlet 클래스를 상속받아 구현되며, 웹 애플리케이션 개발의 핵심 기술 중 하나이다. Servlet의 역할서버에서 요청에 대한 동작 과정은 다음과 같다.서버와 TCP/IP 연결HTTP Request Message 필요한 형태로 변환하여 읽기HTTP Method 및 URL 분석HTTP Header 분석HTTP Message Body 읽기 및 변환분석한 결과를 통해 프로세스 실행비지니스 로직 실행HTTP Response Message 생성HTTP Start Line 생성Header 생성HTTP Message Body에 응답 데이터를 요청한 형식에 맞춰 응답처리가 불가하다면 예외처..