首页 > 编程语言 > 详细

SpringBoot - HandlerInterceptor 中 @Autowired 为空

时间:2021-08-21 20:03:01      阅读:16      评论:0      收藏:0      [点我收藏+]

前言

  • 拦截器中使用@Autowired时为空,这是因为拦截器加载是在Spring Bean创建之前。
public class PermissionInterceptor implements HandlerInterceptor {

    @Autowired
    private UserService userService; // null
    
}
  • 错误
    技术分享图片

解决方法

@Configuration
public class InterceptorConfiguration implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new PermissionInterceptor());
    }
}
  • 修改成:
@Configuration
public class InterceptorConfiguration implements WebMvcConfigurer {

    @Bean
    public PermissionInterceptor getPermissionInterceptor() {
        return new PermissionInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getPermissionInterceptor());
    }
}
  • 这样,PermissionInterceptor 由 @Bean 方法生成,其生命周期由 Spring 管理,Spring 将扫描 @Autowired 目标并注入它们。

- End -
梦想是咸鱼
关注一下吧
技术分享图片

SpringBoot - HandlerInterceptor 中 @Autowired 为空

原文:https://www.cnblogs.com/maggieq8324/p/15169518.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!