Spring boot整合redis过程中,自定义的拦截器中无法通过spring注入redisTemplate
2020-03-06 13:42
1591 查看
最近搭了个springboot的框架,想用redis来验证登陆的用户是否过期,想通过自定义的拦截器来验证redis中是否存有用户登录的数据。但是在拦截器中注入的redis服务总是获取的null,就是redis服务没有注入进来。也就无法调用业务逻辑
对于自定义的拦截器实现HandlerInterceptor接口,还有自定义实现了WebMvcConfigurer的配置文件一些理解:
HandlerInterceptor接口主要定义了三个方法:
- boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handle)方法:该方法将在请求处理之前进行调用,只有该方法返回true,才会继续执行后续的Interceptor和Controller,当返回值为true 时就会继续调用下一个Interceptor的preHandle 方法,如果已经是最后一个Interceptor的时候就会是调用当前请求的Controller方法;
- void postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView)方法:该方法将在请求处理之后,DispatcherServlet进行视图返回渲染之前进行调用,可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
- void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex)方法:该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。用于进行资源清理。
如图的情况就是想在自定义拦截器中使用spring框架注入redisTemplate并进行超时和登录验证
对于自定义的拦截器来说,要配置拦截器
实现WebMvcConfigurer接口, 并在registry.addInterceptor方法中注册自定义的拦截器, 并通过addPathPatterns()方法添加拦截的url.
在拦截器栈里是new了一个拦截器对象,所以这个对象并不是A,所以当打入断点调入这个拦截器的时候,再注入redis服务所以才会空,bean注入只在容器初始化的时候注入。那么我在这个拦截器上面加个注解Component注解可不可以了,是不可以的,Spring boot在扫描的时候虽然能扫描到,但是注入的对象和上面情况一样,不是同一bean
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- springboot 整合 activemq,JmsMessagingTemplate注入失败
- Springboot无法注入自定义配置
- springboot使用protostuff进行序列化和反序列化整合redis的redisTemplate的各种方法的写法
- springboot整合redis 通过ehcache完成自动缓存 功能
- SpringBoot整合Mybatis无法注入dao
- springboot关于拦截器或者过滤器无法注入bean的问题
- Spring Boot中拦截器无法注入Bean
- SpringBoot整合redis集群并使用StringRedisTemplate和RedisTemplate简单操作Redis集群
- spring boot 拦截器中无法注入serivce
- springboot项目通过自定义注解及拦截器Interceptor校验前端传参
- Spring-boot通过redisTemplate使用redis(无须手动序列化)
- spring-boot整合redis作为缓存(3)——自定义key
- spring boot LoginInterceptor(登录拦截器)无法注入bean
- Redis详解 - SpringBoot整合Redis,RedisTemplate和注解两种方式的使用
- SpringBoot自定义拦截器后无法访问静态文件
- SpringBoot-Redis之通过spring注入JedisPool
- SpringBoot中拦截器无法注入Bean的解决办法
- SpringBoot中注入RedisTemplate实例异常解决
- springboot2.0 session存储到redis整合过程中踩倒的坑
- SpringBoot项目使用多线程处理定时任务时无法通过@Autowired注入bean