设为首页 加入收藏

TOP

在Servlet Filter中使用Spring容器
2015-07-16 12:55:16 来源: 作者: 【 】 浏览:4
Tags:Servlet Filter 使用 Spring 容器

定义一个filter, 实现ApplicationContextAware接口:


public class CacheFilter implements Filter, ApplicationContextAware {
? ? private static ApplicationContext ctx; // 必须声明为static


? ? @Override
? ? public void init(FilterConfig config) throws ServletException {
? ? }


? ? @Override
? ? public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {


? ? ? ? filterChain.doFilter(servletRequest, servletResponse);


? ? }


? ? @Override
? ? public void destroy() {


? ? }


? ? @Override
? ? public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
? ? ? ? CacheFilter.ctx = applicationContext; // 保存spring容器到static变量中
? ? }


然后,在spring配置文件中配置该filter,使之成为容器管理的bean:



最后,在web.xml中声明过滤器:



? ? ? ? Cache Filter
? ? ? ? com.fh.taolijie.servlet.CacheFilter
? ?

? ?
? ? ? ? Cache Filter
? ? ? ? appServlet
? ?


这时,我们就可以在doFilter()方法中直接通过ApplicationContext检索需要的bean了:


StringRedisTemplate redis = (StringRedisTemplate)ctx.getBean("redisTemplate");


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇将IDEA maven项目中src源代码下的.. 下一篇SpringMVC通过Redis实现缓存主页

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: