WAS(Web Application Server)
WS(Web Server)
스프링 프레임워크는 자바 개발을 편리하게 해주는 오픈소스 프레임워크입니다.
경량 컨테이너로서 자바 객체를 직접관리
제어의 역전(IOC)이라는 기술을 통해 어플리케이션의 느슨한 결합을 도모
의존성 주입(DI)을 지원
관점 지향 프로그래밍(AOP)을 지원
데이터 관리 및 비즈니스 로직을 처리하는 부분
이며, (DAO, DTO, Service 등)비즈니스 로직의 처리 결과를 통해 유저 인터페이스가 표현
되는 구간입니다. (html, jsp, tymeleaf, mustache 등 화면을 구성하기도 하고, Rest API로 서버가 구현된다면 json 응답으로 구성되기도 한다.)사용자의 요청을 처리하고 Model과 View를 중개하는 역할
을 합니다. Model과 View는 서로 연결되어 있지 않기 때문에 Controller가 사이에서 통신 매체가 되어줍니다.
DispatcherServlet : 클라이언트에게 요청을 받아 응답까지의 MVC 처리과정을 통제한다.
HandlerMapping : 클라이언트의 요청 URL을 어떤 Controller가 처리할지 결정한다.
HandlerAdapter : HandlerMapping에서 결정된 핸들러 정보로 해당 메소드를 직접 호출해주는 역할을 한다.
ViewResolver : Controller의 처리 결과(데이터)를 생성할 view를 결정한다.
의존성 주입은 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 객체를 받아서 사용하는 것입니다.
이를 통해 객체간의 결합도를 줄이고 코드의 재사용성을 높일 수 있습니다.
의존성 주입은 생성자 주입, 필드 주입, 세터 주입의 3 가지 방법이 있습니다.
이 중 Spring에서 가장 권장하는 의존성 주입 방법은 생성자를 통한 주입 방법입니다.
그 이유는 1. 순환 참조를 방지 2. 불변성을 가짐 3. 테스트에 용이하기 때문입니다.
필터는 말 그대로 요청과 응답을 거른뒤 정제하는 역할을 합니다.
스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너에 의해 관리가 되는 것이고, 스프링 범위 밖에서 처리됩니다.
Dispatcher Servlet에 요청이 전달되기 전 / 후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공합니다.
인터셉터는 요청에 대한 작업 전 / 후로 가로채 요청과 응답을 참조하거나 가공하는 역할을 합니다.
웹 컨테이너에서 동작하는 필터와 달리 인터셉터는 스프링 컨텍스트에서 동작합니다.
Dispatcher Servlet이 Controller를 호출하기 전 / 후에 인터셉터가 끼어들어 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공
Servlet Container로 전송
됩니다.HttpServletRequest, HttpServletResponse 객체를 생성
합니다.web.xml을 기반
으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾습니다.
service메소드를 호출한 후 GET, POST여부에 따라 doGet() 또는 doPost()를 호출합니다.
HttpServletResponse객체에 응답
을 보냅니다.응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸
시킵니다.