Filter获取Spring Bean对象
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对象相关推荐
- 【Spring实战】注入非Spring Bean对象
2019独角兽企业重金招聘Python工程师标准>>> 大家经常用到Spring IOC去管理对象之间的依赖关系,但一般情况下都有一个前提:这些Bean对象必须是通过Spring容器 ...
- 更简单获取到Bean对象(1)
1)属性注入(属性注册) 比如说我要在UserController里面调用UserService对象的方法,我们最早的方法是创建一个UserService对象 我们为了进行验证属性注入的方式,做了以下 ...
- 在ServletContextListener实现类中获取spring注入对象
由于项目需要,需在ServletContextListener监听接口实现类中调用spring注入的对象,以获取系统初始化参数.代码如下: [java] view plain copy import ...
- Spring Bean对象
Bean对象的基本配置 在软件应用中由Spring管理的所有的对象都称之为Bean,我们自己创建 的类假如需要由Spring管理,首先需要对这个类进行配置. 常用的配置方式:1.基于xml进行配置 2 ...
- spring bean对象的生成及数据注入的时机 -》getBean
大家都知道在spring中bean对象的生成分两类一类是预加载,也就是说在容器初始化的时候把bean注入生成的事情一起干了.另一类是需要开发者主动调用getBean来获取bean对象. 1.预加载函数 ...
- spring初始化在ServletContextListener实现类中获取spring注入对象
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 由于项目须要,需在ServletContextListener监听接口实现类中调用sprin ...
- SpringUtil获取Spring容器对象
**自己公司使用的简单的SpringUtil,可以使用直接从Spring容器中获取对象.比较方便. 主要就是实现ApplicationContextAware ,学过Spring的都知道,Spring ...
- 扩展点系列之ApplicationContextAwareProcessor普通类获取Spring Bean - 第433篇
历史文章(累计400+篇文章) <国内最全的Spring Boot系列之一> <国内最全的Spring Boot系列之二> <
- spring boot获取spring容器中的bean对象
我们知道如果我们要在一个类使用 spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接 ...
最新文章
- OpenCV(项目)二维码识别(二维码、条形码)
- java db类_Java-jdbc-DBUtils工具类介绍
- java字符串装双精度_Java 将双精度值转换为字符串
- [react] 举例说明在react中怎么使用样式
- python论文摘要_python新玩法:用python进行文章摘要拿取,只需要一行代码
- 网页html无图片代码显示图片,BASE64编码方式(Date Url)
- I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
- 世界杯直播背后的黑科技 腾讯云极速高清技术驱动体育直播发展
- butter滤波器是iir吗_IIR Butterworth型模拟低通滤波器设计原理
- 冰点还原标准版-中文版(全面支持Windows 7)7.0.020.3172(最新版)下载与注册
- 用foobar2000播放云服务器文件,foobar2000英文版怎么用 foobar2000怎么播放音频
- java deprecated 注释_Java注释中的@deprecated与源代码中的@Deprecated
- 开源IMDG之GridGain
- 帝国时代III亚洲王朝序列号自动输入器
- 笔记本外接显示器感觉鼠标有延迟解决办法
- #单调队列#洛谷 2698 [USACO12MAR]花盆Flowerpot
- 数据告诉你哪里才是中国最热的火炉城市?
- CATransition使用导致内存泄漏
- 基于python+django框架+Mysql数据库的校园二手书籍交易系统设计与实现
- 瑜伽健身app开发功能详细说明