springboot拦截器无法用@Autowired自动注入bean。

tech2022-08-04  147

springboot拦截器无法用@Autowired自动注入bean。

public class Interceptor implements HandlerInterceptor{ @Autowired private NavService navService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { List<Navbar> navList = navService.getNavList(); request.getSession().setAttribute("navList",navList); System.out.println("拦截器"); return true; } }

就是这个拦截器中navService无法注入,运行时报空。再网上查找最多就是再继承了 “WebMvcConfigurerAdapter” 的类中添加这个拦截器作为一个bean,但是试了没有用。然后我在该类中用@Autowired来注入navService,结果发现在这里可以注入。

@Configuration public class WebConfiguration extends WebMvcConfigurerAdapter { //这里可以注入 @Autowired private NavService navService; @Override public void addInterceptors(InterceptorRegistry registry) { List list = new ArrayList(); list.add("/*"); registry.addInterceptor(new Interceptor(navService)).addPathPatterns(list); } }

这里的navService是可以注入的。然后我就利用构造注入来给拦截器中的navService注入bean。

public class Interceptor implements HandlerInterceptor{ @Autowired private NavService navService; //构造方法注入 public Interceptor(NavService navService){ this.navService = navService; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { List<Navbar> navList = navService.getNavList(); request.getSession().setAttribute("navList",navList); System.out.println("拦截器"); return true; } }
最新回复(0)