文章目录
介绍
上篇文章介绍了基于XML来配置Spring MVC的DispatcherServlet并整合Spring IoC容器,本篇文章继续介绍Spring MVC提供的基于Java的方式来配置DispatcherServlet并整合Spring IoC容器。
我们仍然使用上篇文章的示例工程。
使用基于Java的方式进行配置的基本步骤就是要实现 Spring MVC提供的某个接口或扩展某个抽象类,往往扩展抽象类会更简单更清晰一些;然后覆盖某些方法即可。
这些接口和抽象类的名字都是以Initializer结尾的,我们就叫它们为初始化器吧。
Spring MVC会自动扫描是否有初始化器的具体类,如果有,就会自动实例化它们并执行相应的方法来配置DispatcherServlet并整合Spring IoC容器。
而且,基于XML和基于Java这两种方式可以同时使用。
使用WebApplicationInitializer接口
我们先使用实现WebApplicationInitializer
接口的方式来配置DispatcherServlet并整合Spring IoC容器。
首先,假设我们要为spring-mvc-test工程的appA应用使用基于Java的方式来配置DispatcherServlet并整合Spring IoC容器。
先把web.xml中的关于appA的相关配置注释掉或删掉,我这里选择注释(使用<!--
和-->
):
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>
<!-- 注释掉appA的相关配置
<servlet>
<servlet-name>appA</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/appA-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appA</servlet-name>
<url-pattern>/appA/*</url-patte