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

Spring MVC 高级配置

2017-01-05 10:30 375 查看
谈谈IT 2017-01-02 06:44

我计划完成 50 到 100 篇有关 Spring 的文章,这是第十五篇。如果您对Spring和编程感兴趣,欢迎订阅我的头条号,也欢迎关注我的个人独立IT博客:谈谈IT,网址就是tantanit.com哦。

上一篇文章《Spring MVC的基础配置》中讲解了Spring MVC的基础配置,本文对应Spring in Action(Spring实战)第四版第七章中(7.1.1 Customizing DispatcherServlet configuration)的内容,将讲解如何自定义Spring
MVC的配置。

如同在上一篇文章所介绍的,任何继承了AbstractAnnotationConfigDispatcherServletInitializer的类都会自动被用来在应用程序DispatcherServlet上下文中配置DispatcherServlet和其它应用上下文。AbstractAnnotationConfigDispatcherServletInitializer定义了三个抽象方法,getServletMappings,getServletConfigClasses以及getRootConfigClasses,分别定义默认的servlet映射、DispatcherServlet上下文配置文件以及其它(中间层和后端)应用上下文配置文件。继承了AbstractAnnotationConfigDispatcherServletInitializer的类必须实现这三个方法。

为DispatcherServlet定义额外配置

除了这些一定要进行的配置外,根据使用场景的不同,有时需要进行一些其它的配置。AbstractAnnotationConfigDispatcherServletInitializer提供了一些方法,但有需要时,可以通过覆盖这些方法,提供额外的配置。比如customizeRegistration方法,AbstractAnnotationConfigDispatcherServletInitializer在servlet上下文中注册了DispatcherServlet之后,会调用customizeRegistration方法,通过覆盖customizeRegistration方法,可以为DispatcherServlet提供额外配置。比如下面的代码就是在处理类型为multipart的请求,将临时文件夹定义为/tmp/spittr/uploads。



使用customizeRegistration配置文件上传临时目录

添加额外的servlet,filter和listener

AbstractAnnotationConfigDispatcherServletInitializer会创建DispatcherServlet和ContextLoaderListener。但是如果想要添加额外的servlet,filter和listener,需要自己再创建。幸运的是,要在web容器中添加组件,只需要创建initializer类。最简单的方式就是实现Spring的WebApplicationInitializer接口。下面的代码注册了一个新的servlet,并且为这个servlet定义了mapping。



使用WebApplicationInitializer添加servlet
下面的代码为相应的servletContext新增了一个filter。



使用WebApplicationInitializer添加filter
可以看到,WebApplicationInitializer非常灵活,但是如果只是想给DispatcherServlet增加filter,可以直接使用AbstractAnnotationConfigDispatcherServletInitializer的getServletFilters方法。



为DispatcherServlet添加filter的简便方法

小结

我们可以使用AbstractAnnotationConfigDispatcherServletInitializer生成和配置DispatcherServlet以及ContextLoaderListener,以对Spring MVC进行一些配置,还可以使用WebApplicationInitializer,为web容器添加额外的servlet,filter和listener。

本文简单提及了如何处理multipart的请求,在下篇文章中,将对此进行详细讲解。

如果您喜欢这篇文章,可以收藏和分享给更多朋友哦,在此拜谢orz!收藏和分享后,在PC上看IT文章,观感更好。您可以通过toutiao.com访问今日头条,也可以直接访问我的独立博客tantanit.com。这篇文章的地址是http://tantanit.com/spring-mvc-advanced-config

本文为头条号作者发布,不代表今日头条立场。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: