์ด ๊ธ์ ์ ๊ฐ ์ดํดํ ๊ฐ๋ ์ ๋ฐํ์ผ๋ก ์์ฑํ์๊ธฐ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ํ๋ฆฐ ๋ถ๋ถ ์๋ค๋ฉด ์ง์ ํด์ฃผ์ธ์ :)
์คํ๋ง์์ ๋งํ๋ ์ปจํ ์คํธ(context)๋ ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๋น๋ค์ด ๋ด๊ฒจ ์๋ ์ปจํ ์ด๋ ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
์คํ๋ง์ ๊ณ์ ๊ณต๋ถ์ค์ด์ง๋ง ์์ฒญ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ด WebApplicationContext์ ApplicationContext์ ๊ด๊ณ, web.xml์์์ servlet-context์ root-context์ ๊ด๊ณ ๊ทธ๋ฆฌ๊ณ ContextLoaderListenter์ dispatcher-servlet์ ๊ด๊ณ ์ด ์ด 3๊ฐ์ ๊ด๊ณ๊ฐ ๋ณผ๋๋ง๋ค ํท๊ฐ๋ ธ์ต๋๋ค.
# root-context ์ sevlet-context ํ๋ฆ
์ด ๊ธ์ WAC์ AC ๊ด๋ จ ๊ธ์ด ์๋๋ฏ๋ก root-context์ servlet-context์ ๋ํด์๋ง ์์๋ณด๊ฒ ์ต๋๋ค.
STS์ ํ์ฉํ์ฌ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด web.xml์ด๋ผ๋ ํ์ผ์ด ์์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/action-mybatis.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<context-param> ํ๊ทธ ์์ ์๋ ์ค์ ์ด root-context ๊ด๋ จํ ๊ฒ๋ค์ด๊ณ <servelet> ํ๊ทธ ์์ ์๋ ์ค์ ์ด servlet-context ๊ด๋ จ ์ค์ ์ ๋๋ค.
ํ๋ฆ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
- <context-param>์ ์ด์ฉํ์ฌ root-context ์ค์ ์ ํด์ค๋๋ค.(action-mybatis๊ฐ root-context)
- <listener>ํ๊ทธ์ ContextLoaderListener ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ contextConfigLocation์ ์๋ root-context๋ค์ ๋ถ๋ฌ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ผ๋ฉด <servlet> ํ๊ทธ ์์ ์๋ ์ค์ ๋ค์ด ์๋ํ๋ฉด์ servlet-context(sertvlet-context.xml)์ ๋ถ๋ฌ์ด๊ณผ ๋์์ root-context์ ๊ฐ์ด ๋ถ๋ฌ์ต๋๋ค. ์ด๋ DispatcherServlet ํด๋์ค๋ฅผ ์คํ์ํต๋๋ค.
# root-context์ servlet-context ๋น๊ต
์์ ํ๋ฆ๋๋ฅผ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด web.xml์์ ContextLoaderListener๋ฅผ ์ด์ฉํ์ฌ root-context๋ฅผ, DispatcherServlet๋ฅผ ์ด์ฉํ์ฌ servlet-context๋ฅผ ์์ฑํฉ๋๋ค.
ใ ฃ root-context
- root-context์ ๋ฑ๋ก๋๋ ๋น๋ค์ ๋ชจ๋ ์ปจํ ์คํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. (๊ณต์ ๊ฐ๋ฅ)
- service๋ dao๋ฅผ ํฌํจํ, ์น ํ๊ฒฝ์ ๋ ๋ฆฝ์ ์ธ ๋น๋ค์ ๋ด์๋ก๋๋ค.
- ์๋ก ๋ค๋ฅธ servlet-context์์ ๊ณต์ ํด์ผ ํ๋ ๋น๋ค์ ๋ฑ๋กํด๋๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- servlet-context ๋ด ๋น๋ค์ ์ด์ฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
ใ ฃ servlet-context
- servlet-context์ ๋ฑ๋ก๋๋ ๋น๋ค์ ํด๋น ์ปจํ ์คํธ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
- DispatcherServlet์ด ์ง์ ์ฌ์ฉํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ํฌํจํ ์น ๊ด๋ จ ๋น์ ๋ฑ๋กํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
- ๋ ์์ ์ธ ์ปจํ ์คํธ๋ค์ ๊ฐ์ง๋ฉฐ, root-context ๋ด ๋น ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
root-context๋ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ ๋ฐ๋ฉด servlet-context๋ ํด๋น ์ปจํ ์คํธ ๋ด์ ์๋ ๋น๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฏ๋ก
root-context ๊ฐ์ ๊ฒฝ์ฐ Service์ Repository(Dao) servlet-context ๊ฐ์ ๊ฒฝ์ฐ Controller๋ฅผ ๋ด๋นํฉ๋๋ค.
๋ง์ฝ ๊ฒน์น๋ ๋น์ด ์๊ธธ ๊ฒฝ์ฐ servlet-context์ ๋น์ ์ฐ์ ์ ํฉ๋๋ค.
์ด์ root-context์ servlet-context์ ๋ํด ์์๋ณด์์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค.
"๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Js] ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ธ, ์์ด, ์ซ์ ์ฒดํฌํ๊ธฐ (0) | 2021.01.21 |
---|---|
[Spring] ApplicationContext์ WebApplicationContext (0) | 2021.01.20 |
[tomcat] Not allowed to load local resource ์๋ฌ (1) | 2021.01.20 |
[Spring] @RestController ๋? (0) | 2021.01.18 |
Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest] ์๋ฌ (0) | 2021.01.18 |