Spring boot整合redis过程中,自定义的拦截器中无法通过spring注入redisTemplate

最近搭了个springboot的框架,想用redis来验证登陆的用户是否过期,想通过自定义的拦截器来验证redis中是否存有用户登录的数据。但是在拦截器中注入的redis服务总是获取的null,就是redis服务没有注入进来。也就无法调用业务逻辑

对于自定义的拦截器实现HandlerInterceptor接口,还有自定义实现了WebMvcConfigurer的配置文件一些理解:
HandlerInterceptor接口主要定义了三个方法:

  1. boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handle)方法:该方法将在请求处理之前进行调用,只有该方法返回true,才会继续执行后续的Interceptor和Controller,当返回值为true 时就会继续调用下一个Interceptor的preHandle 方法,如果已经是最后一个Interceptor的时候就会是调用当前请求的Controller方法;
  2. void postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView)方法:该方法将在请求处理之后,DispatcherServlet进行视图返回渲染之前进行调用,可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
  3. 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值