Spring的两个上下文
当DispatcherServlet
启动的时候,它会创建Spring应用上下文,并加载配置文件或配置类中所声明的bean。
在Spring Web应用中,通常还会有另外一个应用上下文。另外的这个应用上下文是由ContextLoaderListener
创建的。
我们希望DispatcherServlet
加载包含Web组件的bean,如控制器、视图解析器以及处理器映射
而ContextLoaderListener
要加载应用中的其他bean。这些bean通常是驱动应用后端的中间层和数据层组件。
实际上,AbstractAnnotationConfigDispatcherServletInitializer
会同时创建DispatcherServlet和ContextLoaderListener
。GetServletConfigClasses()
方法返回的带有@Configuration
注解的类将会用来定义DispatcherServlet
应用上下文中的bean。getRootConfigClasses()
方法返回的带有@Configuration
注解的类将会用来配置ContextLoaderListener
创建的应用上下文中的bean。
参考:《Spring In Action》