相关文章:
SpringBoot 之AOP切面的使用
SpringBoot之Listener注册到Spring容器中的多种方法
SpringBoot之Interceptor拦截器注入使用
SpringBoot之Filter过滤器的实现及排序问题
SpringBoot 之多个过滤器(Filter) ,监听器(Listener),切面(AOP),拦截器(Interceptor)的指定排序问题总结篇

使用FIlter 或者Listener 无法使用@Autowired 或者@Resource注解。要想使用spring容器中的bean,则需要实现ApplicationContextAware接口的context注入函数, 将其存入静态变量. 通过ApplicationContext进行获取。或者通过WebApplicationContextUtils.getWebApplicationContext 方式获取。

@Component
public class SpringContextHolder implements ApplicationContextAware {private static ApplicationContext applicationContext;/*** 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.*/public void setApplicationContext(ApplicationContext applicationContext) {SpringContextHolder.applicationContext = applicationContext; // NOSONAR}/*** 取得存储在静态变量中的ApplicationContext.*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.*/@SuppressWarnings("unchecked")public static <T> T getBean(String name) {return (T) applicationContext.getBean(name);}/*** 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.*/public static <T> T getBean(Class<T> clazz) {return (T) applicationContext.getBean(clazz);}/*** 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.*/public static <T> T getBean(String name, Class<T> clazz) {return (T) applicationContext.getBean(name, clazz);}/*** @description: WebApplicationContextUtils方式获取*/public static <T> T getBean(ServletRequest servletRequest, Class<T> clazz) {HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;return (T) SpringContextHolder.getBean(httpServletRequest, clazz);}/*** @description:*/public static <T> T getBean(HttpServletRequest httpServletRequest, Class<T> clazz) {ServletContext sc = httpServletRequest.getSession().getServletContext();AbstractApplicationContext cxt = (AbstractApplicationContext) WebApplicationContextUtils.getWebApplicationContext(sc);return (T) cxt.getBean(clazz);}
}

使用Filter,Listener 时无法注入Bean的解决方法相关推荐

  1. 使用@atuowired注解无法注入bean的解决方法(出现Field userMapper in com.peng.service.Impl.UserServiceImpl required a b

    使用@atuowired注解无法注入bean的解决方法(出现Field userMapper in com.peng.service.Impl.UserServiceImpl required a b ...

  2. 使用Docker时遇到的坑与解决方法

    使用Docker时遇到的坑与解决方法 1. Docker 服务启动串台 使用 docker-compose 命令各自启动两组服务,发现服务会串台! [问题起因] 在两个不同名称的目录目录下面,使用 d ...

  3. Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法

    Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法 下载网络上的Adobe flash cs5 精简版(绿色版),Java运行时环境初始化时出现错误,你可能需要重装Flash ...

  4. docker pull下载镜像时的报错及其解决方法

    docker pull下载镜像时的报错及其解决方法 参考文章: (1)docker pull下载镜像时的报错及其解决方法 (2)https://www.cnblogs.com/it-artical/p ...

  5. .Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法

    .Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法 参考文章: (1).Net Framework 4.5.1 安装时遇到严重错误 问题的解决方法 (2)https://ww ...

  6. pringMVC“Ambiguous mapping found. Cannot map ‘XXXController‘ bean method”解决方法

    pringMVC"Ambiguous mapping found. Cannot map 'XXXController' bean method"解决方法 参考文章: (1)pri ...

  7. linux虚拟机上不了王,虚拟机上安装Linux时出现的问题及解决方法

    虚拟机上安装Linux时出现的问题及解决方法 1.在VMWare Workstation中RedHat Error: no usable disks had been found! 原来一般Linux ...

  8. 安装Exchange2003时出0XC1037AE6错误的解决方法.

    安装Exchange2003时出0XC1037AE6错误的解决方法   今天在虚拟机安装Exchange2003时,当进行到林架构扩展ForestPrep时,出现一了个错误: 意思就是: 安装程序在安 ...

  9. mysql 5.6升级8.0_Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法...

    MysqL数据库版本从5.6.28升到8.0.11过程中部署项目时遇到的问题和解决方法,具体介绍如下所示: 首先这个项目用到了hibernate4.2.0,链接MysqL5.6.28没问题,换到8.0 ...

最新文章

  1. Xcode调用栈时小图标代表什么意思
  2. Uber将向公众开放出行大数据:希望能更好规划城市出行
  3. 第二次冲刺------第三天
  4. HarmonyOS之AI能力·助手类意图识别
  5. javaweb项目启动时日志不报错项目又起不来-跑空猫
  6. (35)System Verilog引用包中定义的类(成功)
  7. 在64位机器上无法调用迅雷的问题
  8. 今天跟某个投了社区团购的资本合伙人聊,发现对于社区团购的认知,还是太肤浅
  9. 宽度为100%的HTML表格,在tbody中有垂直滚动
  10. 人生苦短 须用Kotlin
  11. matlab y轴旋转面,Mayavi:绕y轴旋转
  12. 我的家庭私有云计划-20
  13. 学习python-day1
  14. 有关PHP的可变函数
  15. 边玩边学,15个学习Python 的编程游戏网站
  16. CDA Level I 模拟题(1)【附答案解析】
  17. Android自定义View之绘制圆形头像
  18. SQL注入--利用cookie进行注入
  19. 文件上传属性accept
  20. react 实现滚动加载_在React中实现平滑滚动

热门文章

  1. [文摘20071127]推销场上的十种失败的推销员
  2. 让Win让Win XP自动维护系统 自动维护系统
  3. 难过的时候看一看 再坏能有多坏!
  4. Gridview创建行列 合并列、行类
  5. 阻塞与非阻塞 异步 与同步
  6. renameTo()方法的用法
  7. Eloquent JavaScript 阅读笔记一
  8. 【转】两个算法题,感觉挺有意思
  9. wince 中Windows消息的十六进制表述
  10. PHP如何获取用户IP地址