问题描述

SpringFilter注入Bean时注入失败,Bean一直为空。

@Slf4j
@Component
public class RestAuthFilter extends FormAuthenticationFilter {//实际注入为null@AutowiredMobileDeviceService mobileDeviceService;@AutowiredUserService userService;...
}

问题分析

Spring中,web应用启动的顺序是:listener->filter->servlet.

先初始化listener,然后再来就filter的初始化,再接着才到我们的dispathServlet的初始化,

因此,当我们需要在filter里注入一个注解的bean时,就会注入失败,

因为filter初始化时,注解的bean还没初始化,没法注入。

解决方案

方法一:工具类手动注入

Spring注入工具类参考:https://shentuzhigang.blog.csdn.net/article/details/104735859

方法二:工具类手动注入优化

https://www.liangzl.com/get-article-detail-158316.html

方法三:构造加载

1、自定义的SecurityMetadataSource配置部分,使用构造加载

<beans:bean id="mySecurityMetadataSource" class="app_security.MyInvocationSecurityMetadataSource">  <beans:constructor-arg><beans:ref bean="resourceDao"/></beans:constructor-arg>
</beans:bean>
<beans:bean id="resourceDao" class="com.ipi.tyr.module.resourceModule.dao.impl.ResourceDaoImpl"></beans:bean>  

2、在自定义的securityMetadataSource类

private ResourceDao resourceDao;
public MyInvocationSecurityMetadataSource(ResourceDao resourceDao) {  this.resourceDao = resourceDao;  loadResourceDefine();
}

参考文章

https://blog.csdn.net/hehuanchun0311/article/details/80513558

https://www.iteye.com/blog/awaitdeng-1040020

https://www.cnblogs.com/happyflyingpig/p/7998449.html

https://bbs.csdn.net/topics/390545490

https://www.liangzl.com/get-article-detail-158316.html

Spring——Filter过滤器注入Bean时注入失败[NULL]相关推荐

  1. Spring~用注解读取bean(属性注入、构造方法注入、set注入)

    文章目录 注解@Autowired. 属性注入 Setter注入 构造方法注入 三种注入的优缺点 注解@Resource. 1.属性注入 2.构造方法注入 @Resource与@Autowired区别 ...

  2. Spring学习笔记-构造和Set方法注入Bean及集合和null值的注入

    目录 理论 代码及演示 理论 注入Bean:可以通过构造方法注入Bean,通过Set方法注入Bean: 集合类型有:List.Set.Map.Properties: 以及特殊的null值的注入: 通过 ...

  3. Spring在多线程中bean的注入问题

    Spring 在多线程中,bean的注入问题 使用SSM框架,在Service层需要另开一个线程,在线程中使用@Resource或者@Autowired注入全部为NULL, @Component pu ...

  4. springboot 在线程中注入bean,解决注入bean为null的问题

    解决问题: 在我们开发过程中总会遇到比如在线程中需要代用service或者mapper等读取数据库,或者某些自动注入bean失效的情况 问题分析: 在线程中因为线程是安全的,所以是无法自动注入bean ...

  5. Spring Filter过滤器,Spring拦截未登录用户权限限制

    实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面. 比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权 ...

  6. (Activiti6.0.0)SpringProcessEngineConfiguration配置bean时属性注入不了,问题已经找到

    SpringProcessEngineConfiguration配置bean时属性注入不了 我用Spring搭建了个activiti的项目,但是在配置 org.activiti.spring.Spri ...

  7. Spring Bean 的注入方式

    DI 注入 一. 传统的注入方式 通过bean标签方式注入 通过包扫描的方式注入 二. 注解方式配置注入 @Configuration 与 @Bean 注解方式注入 @ComponentScan 包扫 ...

  8. Spring 依赖注入(二、注入参数)

    注入参数基本分7类: 1.基本类型值 2.注入bean 3.内部bean 4.注入null值 5.级联属性 6.List,Set,Map集合的注入 7.properties文件的注入(和集合注入基本是 ...

  9. Spring注解驱动开发第11讲——面试官让我说说:如何使用FactoryBean向Spring容器中注册bean?

    写在前面 经过前面的学习,我们知道可以通过多种方式向Spring容器中注册bean.可以使用@Configuration注解结合@Bean注解向Spring容器中注册bean:可以按照条件向Sprin ...

最新文章

  1. [转载]Surging 分布式微服务框架使用入门
  2. [转]oracle 存储过程的基本语法 及注意事项
  3. easyui-layout中的收缩层无法显示标题问题解决
  4. Nginx+PHP7 安装及配置
  5. ora-01017 invalid username/password logon denied
  6. 组件通信-父组件为子组件传递数据-静态数据//动态数据 // 数据校验
  7. 季节性的分析才不简单,小心不要在随机数据中也分析出季节性...
  8. 百度AI城市又搞事情!一天三场签约 上海市民要全面迎来AI了
  9. define定义的函数如何引用_3分钟短文:Laravel 编程中优雅地添加定义常量
  10. java连接oracle jdbc连接
  11. 航模模拟器(加密狗)
  12. 金蝶k3服务器系统要求,金蝶K3服务器安装及其相关要求[精选].doc
  13. 新浪pop服务器无响应,新浪 – Pop's Blog
  14. 哈佛大学幸福课笔记一
  15. prometheus + grafana 对 springboot 项目进行监控
  16. 凡走过必留下痕迹|2019年个人总结
  17. 【ES6基础】Map与WeakMap
  18. 基于winform的GIS离线地图
  19. java swing写的双色球摇奖机
  20. 视频教程-商超收银软件排队挂单取单编程思路教程-其他

热门文章

  1. discuz nt 安装,完全攻略。
  2. rtsp 测试地址_TranServer:简单实现浏览器播放RTSP流
  3. IDEA显示类的结构 Alt+F7
  4. 如何复制java卡,使用java做一个简单的集卡程序
  5. python 曲线回归_线性回归——Python代码实现
  6. 三十三、深入Vue.js语法(上篇)
  7. KDD 2021 | 异质图神经网络的可微元图搜索
  8. ​搜出来的文本:从文本生成到搜索采样
  9. 机器翻译中丢掉词向量层会怎样?
  10. 视觉与听觉相结合的深度跨域情绪识别