默认按名字找Dispatcher Servlet
配置文件
程序清单7.3:
ContextLoaderListener和DispatcherServlet
各自都会加载一个Spring应用上下文。上下文参数contextConfigLocation
指定了一个XML文件的地址
这个文件定义了根应用上下文,它会被ContextLoaderListener
加载。
如程序清单7.3所示,根上下文会从“WEB-INF/spring/root-context.xml”中加bean定义。
DispatcherServlet
会根据Servlet的名字找到一个文件,并基于该文件加载应用上下文。
在程序清单7.3中,Servlet的名字是appServlet
,因此DispatcherServlet
会从“WEB-INF/appServlet-context.xml”文件中加载其应用上下文。
指定DispatcherServlet
配置文件
如果你希望指定Dispatcher Servlet
配置文件的位置的话,那么可以在Servlet上指定一个contextConfigLocation
初始化参数
例如,如下的配中,DispatcherServlet
会从“WEB-INF/spring/appServlet/servlet-context.xml”加载它的bean:
使用基于Java的配置
要在Spring MVC中使用基于Java的配置,也就是让SpringMVC在启动的时候,从带有@Configuration注解的类上加载配置。
我们需要告诉DispatcherServlet
和ContextLoaderListener
使用AnnotationConfigWebApplicationContext
,这是一个WebApplicationContext
的实现类,它会加载Java配置类,而不是使用XML
要实现这种配置,我们可以设置contextClass
上下文参数以及DispatcherServlet
的初始化参数
contextClass
参数指定了我们使用的是哪个实现了SpringServletContainerInitializer
的类来做配置,(这句话可以看Serverlet配置在Spring中的继承实现顺序)
contextConfigLocation
指定了对应上下文的真正定义(这句话可以看Spring的两个上下文)
如下的程序清单展现了一个新的web.xml,在这个文件中,它所搭建的Spring MVC使用基于Java的Spring配置:
上面两个箭头是ContextLoaderListener
的上下文相关
下面两个箭头是DispatcherServelet
的上下文相关
下面第一个箭头和上面第一个箭头,指向的属性contexClass
使用AnnotationConfigWebApplicationContext
意味着我们要使用JAVA的@Configuration
配置
上面第二个箭头和下面第二个指向属性contextConfigLocation
的WebConfig
意味着我们具体使用的是那个配置类
ContextLoaderListener
的上下文使用的RootConfig
DispatcherServelet
上下文使用的是WebConfig