zoukankan      html  css  js  c++  java
  • 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方法定义的扫描路径下,都不行。
  • 相关阅读:
    mysql修改时区time_zone
    magento的布局(layouts)、模块(block)、模板(templates)
    唯品会消息网关的架构定位
    Java应用一般架构
    maven打包命令
    端口查看与封杀
    java程序优化
    高并发下竞争的资源
    java中的多线程高并发与负载均衡的用途
    Web负载均衡的几种实现方式
  • 原文地址:https://www.cnblogs.com/htsky/p/10592893.html
Copyright © 2011-2022 走看看