728x90
[web.xml]
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
             <param-value>/WEB-INF/spring/root-context.xml</param-value>
      </param-value>
</context-param>

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

web.xml에 설정된 파라미터를 getInitParameter()메서드를 통해 참조할 수도 있지만
단순 문자열이 아닌 객체를 참조하는 방법이 listener이다.

프로그래밍에서의 listener은 귀 기울여 기다리다가 실행되는 컴포넌트(메소드나 함수)를 말한다.

리스너는 이벤트가 발생함과 동시에 특정 행동을 하는데,
이걸 이벤트 핸들링이라고 한다.


위 박스에서 listener에 적힌 ContextLoaderListener은 2개 이상의 dispatcherServlet를 생성했을때 필요하다.

 

ContextLoaderListener를 선언하지 않고 dispatcherServlet을 A,B 두개를 선언하면 각각의 독립적인 context를 가지게 된다. 
근데 만약 A와 B 둘 모두에게 필요한 bean이 있어야 한다면 전역Context를 만들고 그안에 bean을 생성하면 어디서든 접근이 가능해진다.

이때, ContextLoaderListener을 사용해 전역 Context를 생성해 줄 수 있다.

출처 : https://pangtrue.tistory.com/136

 

[Spring MVC] ContextLoaderListener(전역 Context 설정)

1. ContextLoaderListener란? 아래와 같은 2개의 dispatcherServlet을 생성했다고 가정해보겠습니다. A-dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring-co..

pangtrue.tistory.com

 

https://pangtrue.tistory.com/136

 

 

 

 

출처 : 코끼리를 냉장고에 넣는 방법 :: [서블릿/JSP] 리스너(Listner)란? 이벤트 리스너의 개념 설명. 구현 및 등록하기 (tistory.com)

 

[서블릿/JSP] 리스너(Listner)란? 이벤트 리스너의 개념 설명. 구현 및 등록하기

리스너란? 이벤트, 리스너, 이벤트핸들러 간략 개념정리 리스너는 단어의 뜻으로 보자면 (소리를) 듣는 사람, 청취자입니다. 프로그래밍에서의 리스너는 무언가 소리를 듣는 사람을 뜻하기 보다

dololak.tistory.com

 

728x90
728x90
contextConfigLocation 
 - 스프링프레임 워크가 동작하기 위한 설정파일의 위치를 알려주는 파라미터
contextConfigLocation이라는 파라미터를 사용하면 Context Loader가 load할 수 있는 설정파일을 쓸 수 있다.
ContextLoaderListener
 - 스프링에서 제공하는 클래스중 하나로 ContextLoader와 ServletContextListener를 상속하고 있다.
서블릿 컨테이너 생명주기에 맏춰서 spting의 application context를 servlet attribute에 등록하고 제거한다

스프링 프레임워크가 동작하려면 가장 기본적으로 web.xml 파일에 스프링 설정 파일을 명시해 줘야 한다.

스프링 설정파일을 읽어들이기 위해서는 org.springframework.web.context.ContextLoaderListener가 필요하다.

이 리스너가 동작해야 설정파일을 읽어들이고 필요한 객체들을 등록하고 만들 수 있다.

그럼 리스너가 동작하기 위해서 설정파일의 위치를 알려줘야 한다.

그래서 <context-param>안에 contextConfigLocation이라고 해서 파라미터와 위치를 지정해 준다.

하나의 파일이든 여러개든 명시해서 읽어올 수 있다.
(= Context Loader가 load할 수 있는 설정파일을 여러개 쓸 수 있다.)


설정파일 안에는 dataSource, bean(dao, service)등 필요한 객체들이 들어있다.


여기서 또 ContextLoaderListener가 뭐냐면 

ContextLoaderListener
 - 스프링에서 제공하는 클래스중 하나로 ContextLoader와 ServletContextListener를 상속하고 있다.
서블릿 컨테이너 생명주기에 맏춰서 spting의 application context를 servlet attribute에 등록하고 제거한다

 =
WAS구동시에 web.xml을 읽어들여 웹 어플리케이션 설정을 구성하기위한 즉, 초기셋팅작업을 해주는 역할

ContextLoaderListener의 역할

  • ContextLoaderListener 와 DispatcherServlet 은 각각 WebApplicationContext 를 생성하는데, 스프링에서 사용되는 Context 간의 계층 관계를 연결해주는 부분
  • 웹 어플리케이션이 시작되고 종료되는 시점에 Servlet Context가 생성하는 이벤트를 연결
  • Servlet WebApplicationContext 에서는 Root WebApplicationContext 를 참조 가능하지만, 그 반대로 참조 불가

 

[web.xml]
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

출처 : BlueMoon... : org.springframework.web.context.ContextLoaderListener (egloos.com)

 

org.springframework.web.context.ContextLoaderListener

 

mars0717.egloos.com

 

https://developer-latteya.tistory.com/21

 


 

<context-param>은 sts에서 기본적으로 제공해주는 설정 파일외에, 사용자가 직접 컨트롤하는 XML파일을 지정해주는 역활을 한다.
위 박스에서 설정되어 있는 root-content.xml은 모든 서블릿과 필터에서 사용되는 루트 스프링 컨테이너에 대한 설정이다.

 

위 박스의 listener는 스프링 설정 정보를 읽는다.

 

https://mkil.tistory.com/286

 

[SPRING 시작-2] # web.xml 설정엔 무엇이 있을까? (Eclipse+Spring+Maven)

(1) STS 에서 기본적으로 제공해주는 설정 파일 외에, 사용자가 직접 컨트롤 하는 XML파일을 지정해주는 역할을 한다. 에서 설정되어있는 root-context.xml은 모든 서블릿과 필터에서 사용되는 루트 스

mkil.tistory.com

 

 

https://galid1.tistory.com/524

 

SpringMVC - Spring MVC 동작원리 - 2(Servlet에서 IoC Container를 사용하기)

Spring IoC Container를 ServletWeb project에 연동 이제 ServletWebApplication에 Spring을 도입하도록 하겠습니다. 기존 ServletWeb Application에서 Spring을 도입한다면 다음과 같은 것을 이용한다는 의미 입..

galid1.tistory.com

 

728x90

'Spring' 카테고리의 다른 글

[spring] ContextLoaderListener란  (0) 2021.11.11
web, WEB-INF 차이점  (0) 2021.08.24
(추가 필요@RequestBody )@ResponseBody, @RequestMapping, @RequestParam, @ModelAttribute  (0) 2021.01.09
1/06 스프링 chapter06  (0) 2021.01.06
1/04 스프링  (0) 2021.01.04

+ Recent posts