Spring MVC 高级配置

我计划完成 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。



Spring MVC 高级配置

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

添加额外的servlet,filter和listener

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

Spring MVC 高级配置

使用WebApplicationInitializer添加servlet

下面的代码为相应的servletContext新增了一个filter。

Spring MVC 高级配置

使用WebApplicationInitializer添加filter

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

Spring MVC 高级配置

为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

本文为头条号作者发布,不代表今日头条立场。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值