본문 바로가기
✍ 따뜻한 개발 공부

[스프링] 스프링 빈이란 ? / web.xml이란? (주말공부)

by 따따시 2022. 11. 13.

스프링 빈?

스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체를 의미

 

스프링 컨테이너  [참조싸이트]

스프링 컨테이너는 스프링 빈의 생명 주기를 관리

생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할

개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸하지만, 컨테이너를 사용하면 해당 역할을 대신해줌

 

제어 흐름을 외부에서 관리하게 됌

객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어줌


web.xml 이란?

[참조싸이트]

 

web.xml은 DD (Deployment Descriptor : 배포 설명자) , 웹 어플리케이션의 설정파일

web.xml은 Web Application 실행 시 메모리에 로드된다. 

즉, web.xml이란 웹 어플리케이션을 실행시킬 때 함께 올라가야할 설정들을 정의해놓은 곳!

 

web.xml 에서 설정하는 내용?

Web.xml 에서는 크게 DispatcherServlet, ContextLoaderListener, Filter 설정

 

클라이언트 요청들은 모두 저를 거쳐가세요 하는 느낌의 DispatcherServle

Application Context* 단위의 설정을 로드하는 ContextLoaderListener,

 

* Application Context?

- Application Context 는 Web Application 의 Context이며, 모든 Servlet들이 참조가 가능한 부모 Context

 

> DispatcherServlet

클라이언트의 요청을 처리하려면 크게 4가지 일이 진행되어야 한다.

 

1. 클라이언트 요청을 처리해줄 컨트롤러 찾기 : Handler Mapping

2. 컨트롤러 실행 (비지니스 로직 처리) :  Handler Adapter

3. 클라이언트에게 전달해줄 View 찾기 : Controller

4. 응답 데이터와 View를 클라이언트에게 전달 : Handler Adapter

 

1. Handler Mapping

클라이언트의 요청 경로를 이용해서 Controller를 검색하고, 검색된 객체를 DispatcherServlet에게 리턴해준다.

만약 클라이언트가 'http://~~/abcd' 를 요청할 경우 /abcd를 처리할 컨트롤러 객체를 리턴하는 것이다. 

 

2. Handler Adapter

컨트롤러를 실행시키는 역할

이 객체는 @Controller 어노테이션을 이용해 구현한 컨트롤러 뿐만 아니라,

Controller 인터페이스를 구현한 컨트롤러, 특수 목적으로 사용되는 HttpRequestHandler 인터페이스를 구현한 클래스를 동일한 방식으로 실행할 수 있도록 만들어짐

 

Controller가 실행되면 개발자가 구현한 비지니스 로직*을 거쳐 응답 데이터가 추출된다.

실행된 Controller리턴할 데이터ViewHandler Adapter에게 리턴한다.

 

Handler Adapter데이터view ModelAndView 형태로 DispatcherServlet에게 리턴한다.

 

*비즈니스 로직

비즈니스 로직(Business logic)은 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성·표시·저장·변경하는 부분

 

 

클라이언트에게 보여질 view를 찾는 일은 ViewResolver 객체가 처리한다.

ViewReolver bean 객체 설정

prefix(접두사), suffix(접미사)를 참조하여 처리

만약 Controller에서 리턴한 view 이름이 abcd였다면 /WEB-INF/view/abcd.jsp를 찾아 DispatcherServlet에게 리턴

--> 최종적으로 viewResolver가 리턴한 View 객체에 응답 데이터를 넣어 클라이언트에게 리턴

 

3. ContextLoaderListener

모든 서블릿이 공통으로 가져야할 설정들도 있는데, 이를 위해서

Application Context 단위의 설정이 필요하다. 이 작업을 해주는 게 ContextLoaderListener 객체가 처리

 

이 객체는 Application Context 단위의 설정

- Application Context 는 Web Application 의 Context이며, 모든 Servlet들이 참조가 가능한 부모 Context

 

4. Filter

클라이언트에서 온 요청을 Dispatcher Servlet가 받기 전에 거치는 부분임

 

 

 

 

 

 

 

 

 

 

댓글