• java.lang.NullPointerException: null


    springboot 中一个空指针的错误提示:

    2019-03-25 11:26:25.769 ERROR 8896 --- [nio-8680-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet]  :Servlet.service() for servlet [dispatcherServlet] in context with path /ding threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

    java.lang.NullPointerException: null

    at jlsky.auth.AuthInterceptor.preHandle(AuthInterceptor.java:55) ~[classes/:na]

    (省略余下的 tomcat的各种提示信息。)

    事情是这样的,参照 https://www.jianshu.com/p/e88d3f8151db 做了个自定义注解和拦截器的权限模块。但是一运行到 @Autowired 注入的方法就报错。

    拦截器的部分代码如下:

    public class AuthInterceptor implements HandlerInterceptor {
    @Autowired RoleConfirmImpl roleConfirm;

    @Override
    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp,Object obj) throws ResultException {
    String token = req.getHeader("token"); // 从请求中获取 token
    if(!(obj instanceof HandlerMethod)){ //如果不是映射到方法,直接通过。
    return true;
    }
    HandlerMethod handlerMethod = (HandlerMethod) obj;
    Method method = handlerMethod.getMethod();

    //检查有没有需要验证用户授权的注解
    if(method.isAnnotationPresent(AuthToken.class)){
    AuthToken authToken = method.getAnnotation(AuthToken.class);
    if(authToken.required()){
    //执行认证
    if(token == null){
    throw new ResultException(ResultCode.LOGIN_NOTOKEN);
    }
    //verify token,获取 token中的 userid
    int userid = JwtUtil.verifyUserId(token);
    log.info("userid: "+ userid);
    roleConfirm.belong(userid,authToken.role());
    return true;
    }else{
    return false;
    }
    }
    return true; //没有应用注解的访问,许可通过。
    }
    起初,是通过接口间接访问的方法。去掉接口这个环节,问题依旧。
    再后来在方法上添加了 static 解决问题。
    (如果在接口的方法上加 static,那么就需要直接写方法体,也就失去了定义接口意义。)

    虽然问题解决了,但是总觉得这个方法有点LOW。其实我也尝试了加注解或者放到main方法定义的扫描路径下,都不行。
  • 相关阅读:
    git命令
    Java开发中的23种设计模式详解
    Linux下简单基本操作【备查】
    微信|公众平台开发者平台
    MyEclipse老是弹出problem occurred窗口
    spring 工具包怎么下载
    MyEclipse8.6启动后提示内存不足的解决方案(亲测,完美解决)
    bzoj2440,luoguP4318 完全平方数
    hdu5528
    CF1076E Vasya and a Tree
  • 原文地址:https://www.cnblogs.com/htsky/p/10592893.html
Copyright © 2020-2023  润新知