在拦截器中注入service时,报空指针.发现拦截器的加载时间在Spring上下文之前加载,,所以需要提前将拦截器注册到Spring上下文中
失败案例:
package com.example.interceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * @Author: sun * @Email: szw3366@126.com * @Date: 2017/12/4 * @Time: 10:41 * @Description: 此乃拦截器之注册 */ @Configuration public class UserInterceptorRegister extends WebMvcConfigurerAdapter { /** * 注册拦截器 * * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) { /** * 多个拦截器组成一个拦截器链 * addPathPatterns 用于添加拦截规则 * excludePathPatterns 用户排除拦截 * 拦截路径配置:例:拦截所有:"/**" */ registry.addInterceptor(new UserInterceptor()).addPathPatterns("/userinfo/**"); //registry.addInterceptor(new InterceptorName2()).addPathPatterns("/**"); //registry.addInterceptor(new InterceptorName3()).addPathPatterns("/**");以此类推 super.addInterceptors(registry); } }
成功案例:
package com.example.interceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** * @Author: sun * @Email: szw3366@126.com * @Date: 2017/12/4 * @Time: 10:41 * @Description: 此乃拦截器之注册 */ @Configuration public class UserInterceptorRegister extends WebMvcConfigurerAdapter { /** * * @return */ @Bean public HandlerInterceptor getUserInterceptor(){ return new UserInterceptor(); } /** * 注册拦截器 * * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) { /** * 多个拦截器组成一个拦截器链 * addPathPatterns 用于添加拦截规则 * excludePathPatterns 用户排除拦截 * 拦截路径配置:例:拦截所有:"/**" */ registry.addInterceptor(getUserInterceptor()).addPathPatterns("/userinfo/**"); //registry.addInterceptor(new InterceptorName2()).addPathPatterns("/**"); //registry.addInterceptor(new InterceptorName3()).addPathPatterns("/**");以此类推 super.addInterceptors(registry); } }