前边说过在springboot中使用springmvc的拦截器可以使用下面的代码:
这样子并没有错,但是当你的这个AntiFraudInterceptor拦截器里面依赖了其他被spring管理的bean时,你可能在AntiFraudInterceptor里面这样子写:
这个时候就会报出antiFraudService这个bean无法注入的异常,为什么呢?因为AntiFraudInterceptor本身并没有放到spring 的容器中,怎么解决呢,只需要改写一下:
@Configuration public class AntiFraudInterceptorsConfiguration extends WebMvcConfigurerAdapter { @Bean public AntiFraudInterceptor getAntiFraudInterceptor(){ return new AntiFraudInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { // 注册拦截器 InterceptorRegistration ir = registry.addInterceptor(getAntiFraudInterceptor()); // 配置拦截的路径 ir.addPathPatterns("/af_**"); // 配置不拦截的路径 ir.excludePathPatterns("/af_trueLogin"); } }
import org.springframework.context.annotation.Bean;这个注解@Bean用在方法上面,用于返回一个被spring管理的bean。而@Configuration用在类的上面,也是返回一个被spring管理的bean。作用和以前我们常用的@Service、@Controller一样。