在如何在Filter 中注入
Posted BaldWinf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在如何在Filter 中注入相关的知识,希望对你有一定的参考价值。
今天在做项目的过程中想在filter中注入RedisTemplate,发现使用@Autowired注解报java.lang.NullPointerException。
这是因为filter和springmvc共存在web容器中,filter的初始化和spring容器是摩云关系的,所以会 注入失败。
那么如何在filter中注入RedisTemplate呢?实例如下
public class SessionFilter implements Filter
// 声明一个redisTemplate
RedisTemplate redisTemplate;
public void destroy()
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException
// 获取容器
HttpServletRequest req = (HttpServletRequest) request;
ServletContext sc = req.getSession().getServletContext();
XmlWebApplicationContext cxt = (XmlWebApplicationContext) WebApplicationContextUtils.getWebApplicationContext(sc);
// 从容器中获取redisTemplate
if(cxt != null && cxt.getBean("redisTemplate") != null && redisTemplate == null)
redisTemplate = (RedisTemplate) cxt.getBean("redisTemplate");
Object user = redisTemplate.opsForValue().get("sessionId");
@Override
public void init(FilterConfig filterConfig) throws ServletException
先在代码中获取到XmlWebApplicationContext ,再从容器中获取实例即可
以上是关于在如何在Filter 中注入的主要内容,如果未能解决你的问题,请参考以下文章