首页 > 其他分享 >解决:swagger2 Could not resolve reference because of: Could not resolve pointer: /definitions/Map«stri

解决:swagger2 Could not resolve reference because of: Could not resolve pointer: /definitions/Map«stri

时间:2024-10-29 17:59:28浏览次数:7  
标签:Map resolve Could List typeResolver swagger class

问题:使用swagger时页面出现报警信息
mavaen依赖版本:2.8.0
        <!--swagger2-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>


报错信息
Errors
Resolver error at paths./queryAll.get.responses.200.schema.items.$ref
Could not resolve reference because of: Could not resolve pointer: /definitions/Map«string,object» does not exist in document

根据上面的提示是queryAll 这个方法中的Map<string,object>没法识别

queryAll方法如下:

    //查询所有记录
    @GetMapping("/queryAll")
    public List<Map<String, Object>> queryAll(){
        List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from jdbc_test");
        return list;
    }

返回值List<Map<String, Object>> 这种复杂的类型无法被swagger识别使用

//复杂类型需要配置:List<Map<String, Object>>
//List 是单参数的
docket.alternateTypeRules(
      AlternateTypeRules.newRule(
            typeResolver.resolve(List.class,
                 typeResolver.resolve(Map.class, String.class, Object.class)),
            typeResolver.resolve(List.class, WildcardType.class), Ordered.HIGHEST_PRECEDENCE
));

 

最后修改配置类,配置复杂类型

@Configuration //标记为配置类,启动时加载这个类
@EnableSwagger2 //此项目使用Swagger API文档
public class Swagger2Config {
    @Resource
    private TypeResolver typeResolver;

    @Bean
    public Docket api() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //指定要扫描的控制器包路径,这个路径下的类才会自动生成Swagger API文档
                //注意大小写要和实际保持一致
                .apis(RequestHandlerSelectors.basePackage("ltd.newbee.mall.controller"))
                .paths(PathSelectors.any())
                .build();
//复杂类型需要配置:List<Map<String, Object>>
        //List 是单参数的
        docket.alternateTypeRules(
                AlternateTypeRules.newRule(
                        typeResolver.resolve(List.class,
                                typeResolver.resolve(Map.class, String.class, Object.class)),
                        typeResolver.resolve(List.class, WildcardType.class), Ordered.HIGHEST_PRECEDENCE
                ));

        return docket;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("swagger-api文档") //标题
                .description("swagger文档by13") //描述
                .version("1.0") //版本
                .build();
    }
}

 

扩展:

在swagger配置中

//List<Integer> 类型就是如下表示
ResolvedType type = TypeResolver.resolve(List.class, Integer.class);

方法如果返回的是 Map<String, Map<String, List<String>>>类型,swagger同样无法识别,也需要配置

//复杂类型需要配置:Map<String, Map<String, List<String>>>
//map是双参数的
docket.alternateTypeRules(
    AlternateTypeRules.newRule(
       typeResolver.resolve(Map.class, String.class,
               typeResolver.resolve(Map.class, String.class, typeResolver.resolve(List.class, String.class))),
       typeResolver.resolve(Map.class, String.class, WildcardType.class), Ordered.HIGHEST_PRECEDENCE
));

 

 

 

 



标签:Map,resolve,Could,List,typeResolver,swagger,class
From: https://www.cnblogs.com/etangyushan/p/18514081

相关文章

  • Java常见面试真题之中级进阶(HashMap篇)
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Hashtable与HashMap的区别?HashMap中的key我们可以使用任何类作为key吗?HashMap的长度为什么是2的N次方呢?HashMap与ConcurrentHashMap的异同?红黑树有哪几个特征?似乎有点模糊了,那就大概看一下面试题吧。......
  • Markmap,用Markdown语法轻松创建思维导图,AI助力提升工作效率
    Markmap介绍首先,什么是Markmap?Markmap是一个开源项目,旨在用Markdown语法来制作思维导图。它的目的是:允许你使用简单的Markdown语法来快速编写思维导图。值得一提的是,中文Markmap在此基础上进一步引入了AI技术,实现了自动生成思维导图的功能。用户只需输入内容,AI就会自......
  • ImportError: DLL load failed while importing _errors: The specified procedure co
    importh5pyImportError:DLLloadfailedwhileimporting_errors:Thespecifiedprocedurecouldnotbefound. ImportError                              Traceback(mostrecentcalllast)CellIn[2],line1---->1importh5pyFile......
  • 从源码解读为什么使用ConcurrentHashMap,而不使用Hashtable与HashMap
    目录1问题2答案2.1 锁机制不同:ConcurrentHashMap提升并发性能2.2迭代的安全性2.3更好的扩展性3带着答案理解源码3.1 HashMap的putVal()方法:3.2 HashTable的put()方法3.3  ConcurrentHashMap的putVal()方法4总结 1问题我们都知道Hashmap线程不安全,......
  • Go入门指南-8.4map 类型的切片
    假设我们想获取一个map类型的切片,我们必须使用两次make()函数,第一次分配切片,第二次分配切片中每个map元素(参见下面的例子8.4)。示例8.4maps_forrange2.go:packagemainimport"fmt"funcmain(){ //VersionA: items:=make([]map[int]int,5) fori:=ra......
  • 大话Java系列-并发场景下HashMap的环形链表问题,jmap检查内存状态,jstack查看线程状态,线
    文章目录童话故事故事开始发现问题解决问题代码实现1.使用普通`HashMap`导致的环形链表问题2.使用`jmap-histo`检查内存状态3.使用`jstack`查看当前线程的状态4.分析结果`jmap-histo`输出示例`jstack`输出示例5.使用ConcurrentHashMap解决问题6.使用外部加锁保......
  • List<Map<String,Object>> 属性获取
    publicstaticvoidmain(String[]args){//1.数据准备List<Map<String,Object>>list=newArrayList<>();Map<String,Object>map=newHashMap<>();map.put("name","songwp");......
  • 104. 相机控件MapControls
    地图导航相机控件MapControls,你可实现一个类似百度地图的3D导航功能。MapControls使用操作你可以打开课件案例源码测试下效果。平移:鼠标左键拖动旋转:鼠标右键拖动缩放:鼠标中键滚动引入相机控件MapControls引入相机控件MapControls类,旧版本是通过扩展库文件MapControls.js......
  • java ConcurrentHashMap源码分析
    目录一、一些重要属性常量sizeCtl属性Node类TreeNode类TreeBin类ForwardingNode类二、Unsafe类方法三、构造方法无参构造方法带参构造方法四、put()方法大致分析具体分析1.第一阶段spread()方法initTable()方法2.第二阶段helpTransfer()方法3.第三阶段tr......
  • Dynamic DMA mapping Guide(重要的)
    一、前言这是一篇指导驱动工程师如何使用DMAAPI的文档,为了方便理解,文档中给出了伪代码的例程。另外一篇文档dma-api.txt给出了相关API的简明描述,有兴趣也可以看看那一篇,这两份文档在DMAAPI的描述方面是一致的。二、从CPU角度看到的地址和从DMA控制器看到的地址有什么不同?在DM......