SpringMVC的filter怎么使用Autowired依赖注入bean

有的时候根据我们业务的需要,我们需要在web项目中定义一个自己的filter,并想在这个filter中使用@Autowired注入bean供我们使用。如果直接使用的话是不行的,需要我们在xml文件中进行配置。下面就根据我的一个项目写一个示例:

步骤一、定义一个ClientSessionFilter,在这个Filter中注入我们想要的bean

public class ClientSessionFilter implements Filter {private static Logger log = Logger.getLogger(ClientSessionFilter.class);@Autowiredprivate RequestData requestData; //我们想要注入的bean@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {ObjectMapper mapper = new ObjectMapper();HttpServletRequest httpServletReq = (HttpServletRequest) request;String session = httpServletReq.getHeader("S");ClientSession cs;if(StringUtils.isNotBlank(session)) {try {cs = mapper.readValue(session, ClientSession.class);} catch (Exception e) {log.error("Session序列化错误" + e);throw new BusinessException(401, "Session序列化错误");}if(log.isDebugEnabled()) {log.debug(cs);}requestData.setClientSession(cs);}chain.doFilter(request, response);}@Overridepublic void destroy() {}
}

 

步骤二、在spring的配置文件application.xml中配置我们想要的bean和自定义的filter

<bean id="requestData" scope="request" class="cn.ucmed.common.cache.RequestData"><aop:scoped-proxy/> //这个标签可以参考上一遍博客
</bean><bean id="clientSessionFilter" class="cn.ucmed.baseline.d2d.filter.ClientSessionFilter" />

步骤三、在web.xml中配置fileter

<filter><filter-name>filterProxy</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><async-supported>true</async-supported><init-param><param-name>targetBeanName</param-name><param-value>clientSessionFilter</param-value></init-param><init-param><param-name>targetFilterLifecycle</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>filterProxy</filter-name><url-pattern>/registeryuyue/*</url-pattern>
</filter-mapping>

转载于:https://www.cnblogs.com/happyflyingpig/p/7998449.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RunDll32.exe 详解及[Windows批处理]清除IE缓存

Rundll32命令详解 文件作用&#xff1a;执行32位DLL文件中的内部函数 位置&#xff1a;X:&#xff08;当前系统分区)\windows\system32 命令语法&#xff1a; Rundll32.exe DLLname,Functionname [Arguments] 实例&#xff1a; RunDll32.exe InetCpl.cpl,ClearMyTracksByProces…

Linux 操作命令 more

Linux Shell 操作命令 目录总览&#xff08;点击查看详细信息&#xff09; 1、简介 more 命令&#xff0c;功能类似 cat&#xff1b;cat 命令是将整个文件的内容从上到下显示在屏幕上&#xff1b;more 命令会一页一页的显示 2、主要功能 more 命令从前向后读取文件&#xf…

外网访问原理分析

本节我们会将上节创建的 ext_net 连接到 router&#xff0c;并验证内外网的连通性。 更重要的&#xff0c;我们会分析隐藏在表象之下的原理。 将外网连接到 Neutron 的虚拟路由器&#xff0c;这样 instance 才能访问外网。 点击菜单 Project -> Network -> Routers 进入 …

URAL1519 Formula 1 —— 插头DP

题目链接&#xff1a;https://vjudge.net/problem/URAL-1519 1519. Formula 1 Time limit: 1.0 secondMemory limit: 64 MBBackground Regardless of the fact, that Vologda could not get rights to hold the Winter Olympic games of 20**, it is well-known, that the city…

电子透雾与光学透雾监控摄像机区别

当你在疯狂购物时也目前已知的透雾算法大致可以分为两大类&#xff1a;一种是非模型的图像增强方法&#xff0c;通过增强图像的对比度&#xff0c;满足主观视觉的要求来达到清晰化的目的&#xff1b;另一种是基于模型的图像复原方法&#xff0c;它考查图像退化的原因&#xff0…

sshfs的挂载与卸载

在CentOS中 sshfs的使用依赖EPEL(只安装sshfs不会出错&#xff0c;但是却无法使用) 挂载 安装EPEL rpm -i https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 如果这个链接失效&#xff0c;可访问官网http://fedoraproject.org/wiki/EPEL 安装sshfs…

2018年中国视频监控行业发展空间巨大 AI技术赋能发展乃是未来必然趋势

https://bg.qianzhan.com/report/detail/459/190131-c2610ca0.html2019-2024年中国视频监控设备行业市场需求预测与投资战略规划分析报告2019-2024年中国安防行业市场前瞻与投资战略规划分析报告2019-2024年中国智能安防行业市场前瞻与投资战略规划分析报告2019-2024年中国智能…

FTP下载文件

今天公司有需求&#xff0c;需要从远程FTP服务器上下载文件到本地代码。然后看了一下&#xff0c;顺便做个记录 什么是FTP呢&#xff1f; 详细百度百科 FTP 是File Transfer Protocol&#xff08;文件传输协议&#xff09;的英文简称&#xff0c;而中文简称为“文传协议”。用…

tomcat启动报错The JRE could not be found.Edit the server and change the JRE location

解决&#xff1a; 在Windows->Preferences->Server->Runtime Environments 选择Tomcat->Edit&#xff0c;在jre中选择相应的jdk版本&#xff0c;完事。转载于:https://www.cnblogs.com/Alwaysbecoding/p/10172752.html

tortoisegit推送ssh-key需要输入用户信息

修改了测试代码&#xff0c;却在提交代码时候又跳出来请输入用户名和密码, 后来发现&#xff0c;github push有两种方式&#xff0c;ssh方式和https方式。而https方式是不同的&#xff0c;具体来说&#xff0c;就是url信息的不同&#xff0c;实际的验证机制也是不同的。当建立了…

2018年中国视频监控行业现状及行业发展趋势分析预测【图】

一、中国视频监控行业现状 中国 2013-2018 年模拟标清视频监控摄像机和模拟高清视频监控摄像机的复合增长率分别为-15.2%、 29.6%。 模拟标清视频监控摄像机需求量不断下降&#xff0c; 预计 2018 年同比下降 13%&#xff0c; 将下降到 0.38 亿台。 模拟高清视频监控摄像机需求…

周总结02

周一周二周三周四周五周六 所花时间 &#xff5b;包括上课&#xff5d; 16&#xff1a;50- 17&#xff1a;50 8&#xff1a;00-9&#xff1a;50 15&#xff1a;00-16&#xff1a;00 15&#xff1a;00- 16&#xff1a;30 0 10&#xff1a;10- 12&#xff1a;00 8&#xff…

C#中控制线程池的执行顺序

在使用线程池时&#xff0c;当用线程池执行多个任务时&#xff0c;由于执行的任务时间过长&#xff0c;会导制两个任务互相执行&#xff0c;如果两个任务具有一定的操作顺序&#xff0c;可能会导制不同的操作结果&#xff0c;这时&#xff0c;就要将线程池按顺序操作。下面先给…

MySQL触发器 trigger学习

触发器&#xff1a;一类特殊的事物。可监视某种数据操作&#xff0c;并触发相关操作&#xff08;insert/update/delete&#xff09;。表中的某些数据改变&#xff0c;希望同一时候能够引起其他相关数据改变的需求。 作用&#xff1a;变化自己主动完毕某些语句查询&#xff0c;加…

如何分析企业未来发展趋势——以海康威视为例

财务分析主要基于历史数据&#xff0c;但投资还需要看到企业未来的发展。 在前一篇的财务分析的文章中已经提到过&#xff1a;财务分析只是手段&#xff0c;最终还是要从中发现企业的竞争优势以及行业的发展趋势&#xff0c;并以此为基础&#xff0c;分析企业未来的竞争优势及…

java与C++的区别

java与C的区别 来源 https://www.cnblogs.com/Allen-rg/p/6692043.html “作为一名C程序员&#xff0c;我们早已掌握了面向对象程序设计的基本概念&#xff0c;而且Java的语法无疑是非常熟悉的。事实上&#xff0c;Java本来就是从C衍生出来的。”  然而&#xff0c;C和Java之…

js调试笔记

js调试方法很多&#xff0c;今天总结一下最实用的的断点方法: debugger断点 这个很常见&#xff0c;但许多人不知道其实可以添加条件判断 if(something){debugger;} source断点 这个最为常见&#xff0c;不做过多解释&#xff0c;具体说一下几个重要图标: 恢复脚本执行至下一个…

JAVA Spring 事物 ( 已转账为例 ) 基于 AOP 注解

<一> 配置为文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springf…

全球视频监控设备市场规模分析

权威电子行业研究机构IHS Research发布《中国CCTV与视频监控设备市场研究报告》显示&#xff0c;2014年全球视频监控设备市场143亿美元&#xff0c;同比增长14.2%。欧洲、美洲、亚洲都增长低于预期;中国增长高于预期&#xff0c;市场总量达57.1亿美元;美国市场虽然出货量在增加…