•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

SpringBoot之拦截器注入Bean的要领引见(代码示例)【JAVA教程】,SpringBoot

摘要: 本篇文章给人人带来的内容是关于SpringBoot之拦截器注入Bean的要领引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。由于营业须要,须要在拦截器中操纵Re...
本篇文章给人人带来的内容是关于SpringBoot之拦截器注入Bean的要领引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

由于营业须要,须要在拦截器中操纵Redis缓存,依据 controller,service层设置发明没法注入,一向报空指针非常。

解决方案

@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
 
    /**
      * 将自定义拦截器作为Bean写入设置
      * @return
      */
     @Bean
     public SysInterceptor sysInterceptor() {
      return new SysInterceptor();
     }
     /**
      * 对拦截器注册
      */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        String[] patterns = new String[] {"/swagger-resources/**"};
        registry.addInterceptor(sysInterceptor())
                                 .addPathPatterns("/**")
                                 .excludePathPatterns(patterns);
        super.addInterceptors(registry);
    }
}

拦截器:

public class SysInterceptor  implements HandlerInterceptor {
    
    private static final Logger logger = LoggerFactory.getLogger(SysInterceptor.class);
    
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
            Object handler) throws Exception {
            //营业逻辑
         return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
            Object handler, Exception ex) throws Exception {
        
    }
}

查询缘由

拦截器实行在Bean初始化之前致使这个题目的。在web.xml中各个元素的实行递次是如许的,context-param-->listener-->filter-->servlet; 而拦截器是在Spring MVC中设置的,假如从全部项目中看,一个servlet请求的实行历程就变成了如许context-param-->listener-->filter-->servlet-->interceptor,为何拦截器是在servlet实行以后,由于拦截器自身就是在servlet内部的。

观点

  • servlet:servlet是一种运转服务器端的java运用程序,具有独立于平台和协定的特征,而且能够动态的生成web页面,它事情在客户端请求与服务器响应的中间层。

  • filter:filter是一个能够复用的代码片断,能够用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能发生一个请求或许响应,它只是修正对某一资本的请求,或许修正从某一的响应。

  • listener:监听器,从字面上能够看出listener重要用来监听只用。经由过程listener能够监听web服务器中某一个实行行动,并依据 其请求作出响应的响应。浅显的语言说就是在application,session,request三个对象建立灭亡或许往个中增加修正删除属性时自动执 行代码的功用组件。

  • interceptor:拦截器是对过滤器越发细化的运用,他不仅能够运用在service要领前后还能够运用到其他要领的前后拦截器。

以上就是SpringBoot之拦截器注入Bean的要领引见(代码示例)的细致内容,更多请关注ki4网别的相干文章!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号