您的位置:首页 > 编程语言 > Java开发

spring与servlet3.0无web.xml文件时的配置方式

2016-01-13 00:00 597 查看
摘要: spring webmvc servlet 3.0 web.xml ; spring在使用servlet3.0时的配置方式

这里只做简要的记录,更详细的使用方式,更详细的资料参见spring参考文档(21.15 Code-based Servlet container initialization),以后会慢慢补充。



21.15 Code-based Servlet container initialization

In a Servlet 3.0+ environment, you have the option of configuring the Servlet container programmatically as an alternative or in combination with a
web.xml
file. Below is an example of registering a
DispatcherServlet
:

import org.springframework.web.WebApplicationInitializer; public class MyWebApplicationInitializer implements WebApplicationInitializer {         @Override    public void onStartup(ServletContext container) {        XmlWebApplicationContext appContext = new XmlWebApplicationContext();        appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");        ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(appContext));        registration.setLoadOnStartup(1);        registration.addMapping("/");    } }

WebApplicationInitializer
is an interface provided by Spring MVC that ensures your implementation is detected and automatically used to initialize any Servlet 3 container. An abstract base class implementation of
WebApplicationInitializer
named
AbstractDispatcherServletInitializer
makes it even easier to register the
DispatcherServlet
by simply overriding methods to specify the servlet mapping and the location of the
DispatcherServlet
configuration:

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {         @Override    protected Class<?>[] getRootConfigClasses() {        return null;    }    @Override    protected Class<?>[] getServletConfigClasses() {        return new Class[] { MyWebConfig.class };    }    @Override    protected String[] getServletMappings() {        return new String[] { "/" };    } }

The above example is for an application that uses Java-based Spring configuration. If using XML-based Spring configuration, extend directly from
AbstractDispatcherServletInitializer
:

public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {    @Override    protected WebApplicationContext createRootApplicationContext() {        return null;    }    @Override    protected WebApplicationContext createServletApplicationContext() {        XmlWebApplicationContext cxt = new XmlWebApplicationContext();        cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");        return cxt;    }    @Override    protected String[] getServletMappings() {        return new String[] { "/" };    } }

AbstractDispatcherServletInitializer
also provides a convenient way to add
Filter
instances and have them automatically mapped to the
DispatcherServlet
:

public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {    // ...    @Override    protected Filter[] getServletFilters() {        return new Filter[] { new HiddenHttpMethodFilter(), new CharacterEncodingFilter() };    } }

Each filter is added with a default name based on its concrete type and automatically mapped to the
DispatcherServlet
.

The
isAsyncSupported
protected method of
AbstractDispatcherServletInitializer
provides a single place to enable async support on the
DispatcherServlet
and all filters mapped to it. By default this flag is set to
true
.

Finally, if you need to further customize the
DispatcherServlet
itself, you can override the
createDispatcherServlet
method.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: