Spring

Servlet์—์„œ ์Šคํ”„๋ง ApplicationContext ์‚ฌ์šฉํ•˜๊ธฐ

Leica 2020. 3. 11. 11:59
๋ฐ˜์‘ํ˜•

Servlet์—์„œ ์Šคํ”„๋ง ApplicationContext ์‚ฌ์šฉํ•˜๊ธฐ

pom.xml

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.3.RELEASE</version>
</dependency>

์Šคํ”„๋ง ApplicationContext, ์ฆ‰ ์Šคํ”„๋ง IoC๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ด€๋ จ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

spring-context ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์œ„ ์˜ˆ์ œ์—์„œ๋Š” spring-webmvc๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ํ–ˆ์ง€๋งŒ spring-context๋งŒ ๊ฐ€์ ธ์™€๋„ ๋œ๋‹ค.

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param>
    <param-name>contextClass</param-name>
    <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
  </context-param>
  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>com.atoz_develop.AppConfig</param-value>
  </context-param>
  
  ...

์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ์ธ ContextLoaderListener๋ฅผ ์‚ฌ์šฉํ•ด์„œ ApplicationContext๋ฅผ ๋งŒ๋“ค์–ด ServletContext์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฉ๋ฒ•์€ web.xml์— ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

<context-param>์— contextClass ํŒŒ๋ผ๋ฏธํ„ฐ์—๋Š” ApplicationContext์˜ ํƒ€์ž…์„, contextConfigLocation ํŒŒ๋ผ๋ฏธํ„ฐ์—๋Š” ๋นˆ ์„ค์ •ํŒŒ์ผ์„ ์„ค์ •ํ•œ๋‹ค.

contextClass, contextConfigLocation ํŒŒ๋ผ๋ฏธํ„ฐ๋ช…์€ ์ € ์ด๋ฆ„์œผ๋กœ ContextLoader๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•œ๋‹ค.

 

์„œ๋ธ”๋ฆฟ

public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ApplicationContext context = (ApplicationContext) getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
    }
}

๋‹ค์Œ์œผ๋กœ ์„œ๋ธ”๋ฆฟ์—์„œ ServletRequest๋ฅผ ํ†ตํ•ด ServletContext๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๊ฐ€์ ธ์˜จ ServletContext์—์„œ attribute name 'WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE'์„ ์‚ฌ์šฉํ•ด์„œ ContextLoaderListener๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด ์ €์žฅํ•œ ApplicationContext๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•