springboot拦截器中注入service失败问题

原因:代码自相矛盾了。

拦截器用了 @Component,使用时 却直接new对象,new的不被Spring容器管理。所以service为null了。

很尴尬。

 

/**
     * 自定义拦截规则
     *
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // addPathPatterns - 用于添加拦截规则
        // excludePathPatterns - 用户排除拦截
        NewsInterceptor requestLogInterceptor = new NewsInterceptor();
        registry.addInterceptor(requestLogInterceptor).addPathPatterns("/**");
    }

@Component
public class NewsInterceptor implements HandlerInterceptor {

    public static final String COOKIE_ID_NAME = "jtn_global_cookie_id";

    @Autowired
    private JtnRequestLogService jtnRequestLogService;

 

}

------------------------------以下参考https://www.cnblogs.com/pomfor/p/10411945.html

一般都是因为除了在拦截器之外,还需要在拦截器的配置类中,注册拦截器时没有使用spring的bean,而是使用了new创建bean造成的。

 

可参考:http://blog.csdn.net/wmh13262227870/article/details/77005920

当然,部分版本也支持以下方式:

@Configurationpublic 
class WebInterceptorLoader extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter{
//这里可以自动注入下interceptor

     @Autowired

private UserAuthInterceptor userAuthInterceptor;


@Override 
public void addInterceptors(InterceptorRegistry registry){

//注意这里不要使用 new UserAuthInterceptor() ,否则就会出现拦截器里无法注入service的问题 
registry.addInterceptor(userAuthInterceptor).addPathPatterns("/**").excludePathPatterns("/components/*/*","/user-auth/quit");
}
}

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值