为什么一定要判断mappingInfo是否为空

为什么一定要判断mappingInfo是否为空

我不判断mappingInfo是否为空,springboot在启动的时候就会报错:

@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
    RequestMappingInfo mappingInfo = super.getMappingForMethod(method, handlerType);
    String prefix = this.getPrefix(handlerType);
    RequestMappingInfo prefixMappingInfo = RequestMappingInfo.paths(prefix).build();
    return prefixMappingInfo.combine(mappingInfo);
}

但判断mappingInfo是否为空,就不会报错:

@Override
protected RequestMappingInfo getMappingForMethod(Method method, Class<?> handlerType) {
    RequestMappingInfo mappingInfo = super.getMappingForMethod(method, handlerType);
    if(mappingInfo != null){
        String prefix = this.getPrefix(handlerType); 
        RequestMappingInfo prefixMappingInfo = RequestMappingInfo.paths(prefix).build();
        return prefixMappingInfo.combine(mappingInfo);
    }
    return null;
}

请问老师,这是什么原因?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
nonobody 2020-02-27 17:17:02

我尝试了一下。这个方法会执行很多次。有时候mappingInfo是null。所以会报错。

至于为什么会是null就不清楚了。只有一个路由。但是这个方法会执行很多次。

7七月 2020-01-24 16:34:47

我验证的也是这样的,错误消息截图我看下。

  • 我刚看了一下,getMappingForMethod这个方法会自动执行N次,这个N是由项目有多个类打了RequestMapping注解来决定的,而每次扫描到BasicErrorController的方法之后,就会返回null,一次看这块代码的时候我不明白,为什么这样就可以路由去减少前缀也可以了,也没有动手去做,刚刚第二次看还是不明白,就debug去看了一下才明白,这个方法会获取到RequestMapping注解里面的name值或者数组value的值
    2020-03-03 20:22:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师