[27일차] 스프링 컨테이너 역할, 스프링 설정 파일(pom.xml, web.xml...

[27일차] 스프링 컨테이너 역할, 스프링 설정 파일(pom.xml, web.xml...

Spring Container(스프링 컨테이너)

저장소에 해당하는 XML 설정파일을 참조하여 의 생명주기를 관리하고 여러가지 서비스를 제공.

[ Spring Container의 구동 ]

import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class BoardServiceClient { public static void main(String[] args) { // Spring 컨테이너 구동 AbstractApplicationContext container = new GenericXmlApplicationContext("applicationContext.xml"); // Spring 컨테이너로부터 BoardServiceImpl 객체를 Lookup. BoardService boardService = (BoardService) container.getBean("boardService"); // ... }

ApplicationContext

- Bean Factory가 제공하는 객체 관리 기능 외에도 트랜잭션 관리, 메시지 기반의 다국어 처리 등 다양한 기능 지원.

- 컨테이너가 구동되는 시점에 등록된 클래스들을 객체 생성하는 즉시 로딩 pre-loading 방식.

- (ApplicationContext의 구현 클래스들은 매우 많은데 이 중 아래 두 가지만 알면 된다.)

GenericXmlApplicationContext

- 파일 시스템이나 클래스 경로에 있는 XML 설정 파일을 로딩하여 구동하는 컨테이너.

XmlWebApplicationContext

- 웹 기반의 스프링 애플리케이션을 개발할 때 사용하는 컨테이너.

* xml 파일은 모두 '객체'를 정의한다.

pom.xml

"메이븐 설정파일이자 빌드를 위한 플랫폼"

* Maven은 라이브러리를 연결해 줌.

- 스프링을 사용하기 위해서 필요한 모듈(e.g. core, jdbc, web, mvc, aop ..)을 가져오기 위한 파일.

pom.xml에 의해서 필요한 라이브러리만 다운로드 해서 사용한다.

1. 프로젝트 기본 정보

2. 빌드 설정

3. 프로젝트 관계 설정 (dependency 관련)

4. 빌드 환경 (빌드환경에 따른 정보, 프로파일)

* dependency : 어떤 모듈에 의존한다.

web.xml

"웹 프로젝트의 환경 설정 파일(deploy descriptor)"

" 설정을 위한 설정파일. "

1. 톰캣에 있는 모든 web application의 기본설정을 정의한다.

2. 각종 servlet의 설정과 servlet 매핑, 필터, 인코딩 등을 담당한다.

- Deploy 할때 Servlet의 정보를 설정해준다.

- 브라우저가 Java Servlet에 접근하기 위해서는 WAS(e.g. Tomcat)에 필요한 정보를 알려줘야 해당하는 Servlet을 호출할 수 있다.

(배포할 Servlet이 무엇인지, 해당 Servlet이 어떤 URL에 매핑되는지)

- 스프링 프로젝트가 실행되면 가장 먼저 web.xml을 읽어들이게 되고 위에서부터 차례로 태그를 해석하기 시작한다.

각종 설정을 정의하고 여러 xml파일을 인식하도록 각 파일을 가리킨다.

Servlet 컨테이너는 web.xml 파일에 해당 컨테이너가 생성하고 관리할 클래스들을 등록한다.

클래스 하나 당 하나의 설정이 필요하다.

[ web.xml의 구체적인 설정 내용 ]

1) DispatcherServlet

2) ContextLoaderListener

- 서블릿 컨테이너가 파일을 읽어서 구동될때, ContextLoaderListener가 자동으로 메모리에 생성된다. (Pre-Loading)

ContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현하고 있으며, ApplicationContext를 생성하는 역할을 수행한다.

ContextLoaderListener 클래스는 Servlet의 생명 주기를 관리해준다.

Servlet을 사용하는 시점에 servlet-context.xml에 ApplicationContext 등록, Servlet이 종료되는 시점에 ApplicationContext 삭제

- Controller가 공유하는 Bean들을 포함하는 Spring Container를 생성한다.

- 공유하는 Bean: DAO, DataSource, Service

- 각 Bean에 대한 설정 파일을 따로 생성한다.

service-context.xml : Service 관련

dao-context.xml : DAO 관련

applicationContext.xml : DataSource 관련, properties 등록, SessionFactory, TransactionManager 등

3) encodingFilter

* 각 application 마다 설정시, web.xml은 파일을 복사해서 필요한 것만 적으면 된다.

servlet-context.xml

* 파일명은 변경 가능.

- WEB Application에서 Client의 요청을 받기 위한 설정이다.

- jsp와 관련 있는 객체(bean)를 설정해준다. (controller, MultipartResolver(파일 업로드), Interceptor(로그인) 등)

- url과 관련된 controller, @(어노테이션), ViewResolver, Interceptor, MultipartResolver 등의 설정을 해준다.

REFERENCE

인프런 자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌

https://gmlwjd9405.github.io/2018/10/29/web-application-structure.html

from http://workatit.tistory.com/27 by ccl(A) rewrite - 2020-03-21 05:20:25

댓글

이 블로그의 인기 게시물

데이터 바인딩 추상화 - propertyEditor

[샤니마스 SPRING PARTY2020] THE IDOLM @ STER SHINY COLORS SPRING...

Spring Web Form