티스토리 뷰

이전에 dispatcher-servlet.xml에 모든 설정을 몰아 넣어 사용했다.

 

이건 잘못된 방식은 아니지만, 여러명이서 작업을 할 때에는 누군가 xml을 건드릴 일이생기거나

 

할때 기다림이 발생 할 수 있다. 그런 것을 동기화라고 한다.

 

그래서 설정을 분리하고 그 설정에 적절한 네임을 붙여주면 작업이 편해질 수 있는데

 

먼저 설정을 3개의 파일로 나누어주자.

 

 

나는 이렇게 3개의 설정으로 나누어 줬다

 

권한설정인 security는 아직 설정 전이고

 

service는 service에 관련된 것들, servlet은 껍데기를 형성해주는 파일이다.

 

파일을 만들어 줬다면 기존에 servlet을 설정했던 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_3_1.xsd"
  version="3.1"
  metadata-complete="true">

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

<context-param>
  <param-name>contextConfigLocation</param-name>
    <param-value>  
       /WEB-INF/spring/service-context.xml
       /WEB-INF/spring/security-context.xml

    </param-value>
</context-param>
<servlet>
  <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/spring/servlet-context.xml</param-value>
      </init-param>

    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>

    <url-pattern>/</url-pattern>
</servlet-mapping>
  <display-name>Welcome to Tomcat</display-name>
  <description>
          Welcome to Tomcat
  </description>

</web-app>

먼저 기존에

 

<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring/servlet-context.xml</param-value>
    </init-param>

<async-supported>true</async-supported>
</servlet>

 

 

여기에 init-param태그 안에 이름과 값을 설정해준다. 여기서는 껍데기가 되는 것을 설정 해주고

 

 

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/spring/service-context.xml
    /WEB-INF/spring/security-context.xml

    </param-value>
</context-param>

 

context-param 태그안에 이런식으로 이름을 또 설정해주고

나머지 context 파일의 경로를 잡아준다.

 

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

 

끝으로 리스너를 설정해주면 되는데

 

ContextLoaderListener는 

톰캣이 시작될때 끝날때 또는 세션이 시작될떄 끝날때 등 어떤 이벤트가 발생할때 사용되는데

 

이런 리스너가 기본적으로 가지게 되는 파라미터값을 위에 context-param이 가질 수 있다.

 

이 컨테스트로더의 설정 파라미터를 디스패처가 가지고 쓸 수있다.

 

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/servlet-context.xml</param-value>
</init-param>
<load-on-starup>1</load-on-starup>
<async-supported>true</async-supported>
</servlet>

 

 

끝으로 모든 서블릿은 url 요청이 오면

 

디스패처가 메모리에 올라가게 된다.

 

다만 설정 또한 켜져야 하기 때문에 요청이 오고나서 설정이 켜지면 속도가 느릴 수 있다

<load-on-starup>1</load-on-starup> 

 

이걸 이용하면 starup이 가리키는 것은 톰캣인데 톰캣이 실행 될때 설정이 실행된다고

 

표시하는 것인데 1,2,3으로 순서를 정할 수도 있고

 

<async-supported>true</async-supported> 

비동기 적으로 로드되는 것을 원할때에는

이걸 설정해준다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함