Spring Boot使用Servlet、Filter或Listener的方式
根据官方文档说明,有两种方式可以在你的Spring Boot应用中使用Servlet、Filter或Listener。
其一:将Servlet、Filter或Listener注册成Spring Bean。
注意:
由于这三者与容器有关,它们不会被延迟初始化!所以,一般情况下不能将其他Spring Bean 注入到这三者的属性中 -- 但不是说不能获取,你完全可以使用某些手段,在调用之前再注入!
Servlet、Filter可以使用ServletRegistrationBean、FilterRegistrationBean来设置初始化参数和映射路径。
默认,如果不指定某个filter的dispatcherType的话,会匹配FORWARD、INCLUDE和REQUEST。如果启用了async,那还会匹配ASYNC。
如果只想使用Bean,而不想在容器中安装它们的话,registration.setEnabled(false) 即可。
其二:使用类路径扫描,具体来说就是在@Configuration class 上使用@ServletComponentScan。
注意:
需要配合@WebServlet、@WebFilter或@WebListener使用; //这是Servlet 3的东西,javax.servlet。
默认扫描当前配置文件所在包及子包。
ps:
如果是Spring MVC项目,且是Java config的,那可以在选择上面的第一种方式;
或者在WebApplicationInitializer实现类中设置Filter - 应该是有一个添加多个Filter的方法,但只能用于dispatcherServlet!
或者,还可以在WebApplicationInitializer实现类的onStartup()方法中获取ServletContext,并注册自己的Servlet、Filter或Listener。
WebApplicationInitializer 这个东西很有意思,属于SPI,但又不用自己设置加载的文件,所以应该是由Spring框架负责提供给ServletContainerInitializer的吧。
还需要补充一点,这是Servlet 3.0+才支持的功能。
Spring Boot使用Servlet、Filter或Listener的方式的更多相关文章
- Spring Boot整合Servlet,Filter,Listener,访问静态资源
目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...
- spring boot整合servlet、filter、Listener等组件方式
创建一个maven项目,然后此项目继承一个父项目:org.springframework.boot 1.创建一个maven项目: 2.点击next后配置父项目及版本号 3.点击finish后就可查看p ...
- 从零开始的Spring Boot(2、在Spring Boot中整合Servlet、Filter、Listener的方式)
在Spring Boot中整合Servlet.Filter.Listener的方式 写在前面 从零开始的Spring Boot(1.搭建一个Spring Boot项目Hello World):http ...
- Spring Boot 注册 Servlet 的三种方法,真是太有用了!
本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spr ...
- [转] Spring Boot实战之Filter实现使用JWT进行接口认证
[From] http://blog.csdn.net/sun_t89/article/details/51923017 Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(j ...
- Spring Boot 集成servlet,发布为可直接运行的war包,方便后续打包为docker镜像。
背景:Spring Boot 集成servlet,发布为可直接运行的war包,方便后续打包为docker镜像. 原文地址 https://github.com/weibaohui/springboot ...
- Spring Boot定义系统启动任务的两种方式
Spring Boot定义系统启动任务的两种方式 概述 如果涉及到系统任务,例如在项目启动阶段要做一些数据初始化操作,这些操作有一个共同的特点,只在项目启动时进行,以后都不再执行,这里,容易想到web ...
- Spring Boot 中实现定时任务的两种方式
在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...
- spring boot(18)-servlet、filter、listener
servlet.filter.listener的用法就不讲了,只讲如何在spring boot中配置它们.有两种方式,一种是从servlet3开始提供的注解方式,另一种是spring的注入方式 ser ...
随机推荐
- mongoose之findOneAndUpdate方法之代码示例
categoryModel.findOneAndUpdate({name:{$in:req.body.categorys}},{$inc:{total:1}},function(err){ if (e ...
- git将本地项目添加到github上
git init git add . git commit -m '添加备注' git add remote origin originUrl git push -u origin master 注意 ...
- 将docker的image转移到数据盘
1. 将 /var/lib/docker 移至数据盘 原因: docker运行中产生较大文件,以及pull下来的images会占用很多空间: 注意:在执行前确认docker已经启动,sudo dock ...
- springboot+sqlite+maven+mybatis
https://blog.csdn.net/u012343297/article/details/79163977 ****************************************** ...
- laravel中facade serviceprovider的理解
一个serviceprovider就是一个解决某个功能的公用模块,实际上可以直接用在di里注册然后从di中取出,为啥还要搞个facade呢? 有几个方面的原因 1.把实例化移入到serviceprov ...
- python - hadoop,mapreduce demo
Hadoop,mapreduce 介绍 59888745@qq.com 大数据工程师是在Linux系统下搭建Hadoop生态系统(cloudera是最大的输出者类似于Linux的红帽), 把用户的交易 ...
- OCMock 3 参考
Typorahtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { ...
- SQL复制表操作
select * into tb1 from tb2 insert into tb1 (fld1, fld2) select fld1, 0 from tb2 where fld0='x' 以上两句 ...
- TypeError: decoding Unicode is not supported
在试图读取网页的时候遇到TypeError: decoding Unicode is not supported, 主要原因是返回的字符串已经是unicode类型了
- selenium.common.exceptions.WebDriverException: Message: "Can't load the profile.
记录一下,Selenium在最新版本中修好了这个问题.运行CMD,然后输入 pip install -U selenium