Loading...
Spring Framework Reference Documentation 7.0.2의 Context Hierarchy의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
DispatcherServlet은 자체 설정을 위해 일반 ApplicationContext의 확장인 WebApplicationContext를 기대합니다. WebApplicationContext는 자신과 연관된 ServletContext 및 Servlet에 대한 링크를 가집니다. 또한 ServletContext에 바인딩되어 있으므로, 애플리케이션은 RequestContextUtils의 static 메서드를 사용하여 WebApplicationContext를 조회해야 하는 경우 이에 접근할 수 있습니다.
많은 애플리케이션에서는 단일 WebApplicationContext를 가지는 것이 단순하며 충분합니다. 또한 하나의 root WebApplicationContext가 여러 DispatcherServlet(또는 다른 Servlet) 인스턴스에 걸쳐 공유되고, 각자가 고유한 child WebApplicationContext 설정을 갖는 context hierarchy를 가지는 것도 가능합니다.
context hierarchy 기능에 대한 자세한 내용은 Additional Capabilities of the ApplicationContext를 참조하십시오.
root WebApplicationContext는 일반적으로 여러 Servlet 인스턴스에 걸쳐 공유되어야 하는 data repository 및 business 서비스와 같은 infrastructure 빈을 포함합니다. 이러한 빈은 효과적으로 상속되며, Servlet-specific child WebApplicationContext에서 override(즉, 재선언)될 수 있으며, 이 child WebApplicationContext는 일반적으로 주어진 Servlet에 local한 빈을 포함합니다.
다음 이미지는 이러한 관계를 보여 줍니다:

다음 예제는 WebApplicationContext hierarchy를 구성합니다:
1public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 2 3 @Override 4 protected Class<?>[] getRootConfigClasses() { 5 return new Class<?>[] { RootConfig.class }; 6 } 7 8 @Override 9 protected Class<?>[] getServletConfigClasses() { 10 return new Class<?>[] { App1Config.class }; 11 } 12 13 @Override 14 protected String[] getServletMappings() { 15 return new String[] { "/app1/*" }; 16 } 17}
1class MyWebAppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() { 2 3 override fun getRootConfigClasses(): Array<Class<*>> { 4 return arrayOf(RootConfig::class.java) 5 } 6 7 override fun getServletConfigClasses(): Array<Class<*>> { 8 return arrayOf(App1Config::class.java) 9 } 10 11 override fun getServletMappings(): Array<String> { 12 return arrayOf("/app1/*") 13 } 14}
application context hierarchy가 필요하지 않은 경우, 애플리케이션은
getRootConfigClasses()를 통해 모든 설정을 반환하고getServletConfigClasses()에서null을 반환할 수 있습니다.
다음 예제는 web.xml에 해당하는 내용을 보여 줍니다:
1<web-app> 2 3 <listener> 4 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 5 </listener> 6 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>/WEB-INF/root-context.xml</param-value> 10 </context-param> 11 12 <servlet> 13 <servlet-name>app1</servlet-name> 14 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 15 <init-param> 16 <param-name>contextConfigLocation</param-name> 17 <param-value>/WEB-INF/app1-context.xml</param-value> 18 </init-param> 19 <load-on-startup>1</load-on-startup> 20 </servlet> 21 22 <servlet-mapping> 23 <servlet-name>app1</servlet-name> 24 <url-pattern>/app1/*</url-pattern> 25 </servlet-mapping> 26 27</web-app>
application context hierarchy가 필요하지 않은 경우, 애플리케이션은 “root” context만 구성하고
contextConfigLocationServlet parameter를 비워 둘 수 있습니다.
DispatcherServlet
Special Bean Types