springboot的拦截器如何注入service为空的问题解决方式

具体的为什么需要这样写才可以注入service目前还没有理解透,只是多次试验后发现这样可以注入.

因为LoginInterceptor注册的时候使用的是new的方式,这个时候就需要通过构造函数的方式进行注入

//这里写法基本都一样

public class LoginInterceptor extends HandlerInterceptorAdapter {

    private RoleService roleService;

    private LoginConfig loginConfig;

    protected Logger logger;

//唯一不同的是这里写个构造方法

    public LoginInterceptor(RoleService roleService){

        this.roleService =roleService;

    }

@Override

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

      //调用roleService方法

  roleService.menght();

}

}

@Configuration

public class MyWebConfigureAdapter extends WebMvcConfigurerAdapter {

    //service注入在拦截器的注册器中

    @Autowired

    private RoleService roleService;

    @Autowired

    private LoginConfig loginConfig;

    @Override

    public void addInterceptors(InterceptorRegistry registry) {

        super.addInterceptors(registry);

        //registry.addInterceptor(new LoggerInterceptor()).addPathPatterns("/**");

        registry.addInterceptor(new LoginInterceptor(roleService,loginConfig)).addPathPatterns("/**");

        super.addInterceptors(registry);

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容