Filter拦截器获取Bean
SSM框架中,Bean都是被Spring容器管理的,使用的时候,直接通过注解@Autowired,注入即可

在Filter中,不能使用@Autowired注解注入,通过注解获取到的为null
Filter并没有被Spring容器管理,它是运行在Tomcat上的,是由Servlet来管理的

Spring容器,只有都在容器中的两个对象,才可以使用注解获取
不在Spring容器中,不被Spring容器管理,根据就不会识别Spring的注解

通过Servlet上下文,来获取Java Bean

public class MessageFilter implements Filter {private WebApplicationContext wac;@Overridepublic void init(FilterConfig arg0) throws ServletException {wac = (WebApplicationContext)arg0.getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {try {if (servletRequest!=null){MessageController messageController = wac.getBean(MessageController.class);servletRequest.setAttribute("messageList", messageController.selectMessageList());}} catch (Exception e) {throw e;} finally {filterChain.doFilter(servletRequest, servletResponse);}}@Overridepublic void destroy() {}
}

在Filter的init方法中,通过WebApplicationContext
获取Servlet上下文ServletContext
在doFilter方法中,通过调用getBean方法,获取对应的Java Bean对象

注意
前置拦截器,如果,拦截的是所有的请求
必须,加try……catch,将chain.doFilter写到finally中
保证,无论拦截器的方法,执行成功还是失败,都会往下继续执行
否则,因为某个拦截器报错,请求中断,后台都无法继续执行

filterChain.doFilter(servletRequest, servletResponse);

Filter拦截器
属于前台拦截,可以拦截Http请求

AOP拦截器
属于后台拦截,可以拦截普通的参数,无法拦截Http请求

AOP拦截的参数类型
普通的参数可以拦截,基本类型的参数也可以拦截,普通的pojo对象,也可以拦截,但是,Model对象调用不到,无法拦截

Filter获取Spring Bean对象相关推荐

  1. 【Spring实战】注入非Spring Bean对象

    2019独角兽企业重金招聘Python工程师标准>>> 大家经常用到Spring IOC去管理对象之间的依赖关系,但一般情况下都有一个前提:这些Bean对象必须是通过Spring容器 ...

  2. 更简单获取到Bean对象(1)

    1)属性注入(属性注册) 比如说我要在UserController里面调用UserService对象的方法,我们最早的方法是创建一个UserService对象 我们为了进行验证属性注入的方式,做了以下 ...

  3. 在ServletContextListener实现类中获取spring注入对象

    由于项目需要,需在ServletContextListener监听接口实现类中调用spring注入的对象,以获取系统初始化参数.代码如下: [java] view plain copy import  ...

  4. Spring Bean对象

    Bean对象的基本配置 在软件应用中由Spring管理的所有的对象都称之为Bean,我们自己创建 的类假如需要由Spring管理,首先需要对这个类进行配置. 常用的配置方式:1.基于xml进行配置 2 ...

  5. spring bean对象的生成及数据注入的时机 -》getBean

    大家都知道在spring中bean对象的生成分两类一类是预加载,也就是说在容器初始化的时候把bean注入生成的事情一起干了.另一类是需要开发者主动调用getBean来获取bean对象. 1.预加载函数 ...

  6. spring初始化在ServletContextListener实现类中获取spring注入对象

    查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 由于项目须要,需在ServletContextListener监听接口实现类中调用sprin ...

  7. SpringUtil获取Spring容器对象

    **自己公司使用的简单的SpringUtil,可以使用直接从Spring容器中获取对象.比较方便. 主要就是实现ApplicationContextAware ,学过Spring的都知道,Spring ...

  8. 扩展点系列之ApplicationContextAwareProcessor普通类获取Spring Bean - 第433篇

    历史文章(累计400+篇文章) <国内最全的Spring Boot系列之一> <国内最全的Spring Boot系列之二> <

  9. spring boot获取spring容器中的bean对象

    我们知道如果我们要在一个类使用  spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接 ...

最新文章

  1. OpenCV(项目)二维码识别(二维码、条形码)
  2. java db类_Java-jdbc-DBUtils工具类介绍
  3. java字符串装双精度_Java 将双精度值转换为字符串
  4. [react] 举例说明在react中怎么使用样式
  5. python论文摘要_python新玩法:用python进行文章摘要拿取,只需要一行代码
  6. 网页html无图片代码显示图片,BASE64编码方式(Date Url)
  7. I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
  8. 世界杯直播背后的黑科技 腾讯云极速高清技术驱动体育直播发展
  9. butter滤波器是iir吗_IIR Butterworth型模拟低通滤波器设计原理
  10. 冰点还原标准版-中文版(全面支持Windows 7)7.0.020.3172(最新版)下载与注册
  11. 用foobar2000播放云服务器文件,foobar2000英文版怎么用 foobar2000怎么播放音频
  12. java deprecated 注释_Java注释中的@deprecated与源代码中的@Deprecated
  13. 开源IMDG之GridGain
  14. 帝国时代III亚洲王朝序列号自动输入器
  15. 笔记本外接显示器感觉鼠标有延迟解决办法
  16. #单调队列#洛谷 2698 [USACO12MAR]花盆Flowerpot
  17. 数据告诉你哪里才是中国最热的火炉城市?
  18. CATransition使用导致内存泄漏
  19. 基于python+django框架+Mysql数据库的校园二手书籍交易系统设计与实现
  20. 瑜伽健身app开发功能详细说明

热门文章

  1. Gulp 之图片压缩合并
  2. 5年博龄只有十几篇文章,惭愧呀
  3. Android开发:什么是IBinder
  4. Linux Grep 命令说明
  5. MasterPage事件使用
  6. 一条语句执行跨越若干个数据库
  7. STM32 容易烧成电源短路解决方法
  8. BLE-NRF51822教程13-连接时触发配对
  9. stm32的can总线理解及应用——程序对应stm32f103系列
  10. 多索引表 (8)表操作