Giter Site home page Giter Site logo

nobugboy / ydoc Goto Github PK

View Code? Open in Web Editor NEW
82.0 4.0 13.0 206 KB

充分利用springboot自有注解来对文档进行描述的一款文档生成器。 让我们抛弃大量注解和配置一起拥抱简洁。

License: Apache License 2.0

Java 100.00%
ydoc-yapi spring-boot swagger-bootstrap-ui

ydoc's Introduction

YDoc一款低侵入性、简洁并同时支持SwaggerUi和YApi的文档生成器

使用过程出现问题,可以提一个issues描述一下,看到后会更正。

使用Springboot 2.6.* + 的朋友需要在配置文件新增一条参数

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

final版本使用了新的ui库

       <dependency>
            <groupId>com.github.nobugboy</groupId>
            <artifactId>ydoc-spring-boot-starter</artifactId>
            <version>1.1.6.final</version>
        </dependency>

充分利用springboot自有注解来对文档进行描述的一款文档生成器。 让我们抛弃大量注解和配置一起拥抱简洁。

引言

每当工程需要接口文档时,总会使用Swagger一类的restfulApi文档生成工具,相信很多人在使用时都会被它的一些注解和配置恶心到,如果工程对代码规范无要求还能作为注释来看,如果需要再写Javadoc注释就无形中增加了工作量,为了更加简单的使用我写了一款基于spring-boot-starter的依赖库,它基于YApi平台可以统一管理api文档和权限控制,mock数据等。

1. 对比其他文档生成器

这里举两种java平台常用的api文档生成器。

1.JDoc

JDoc是根据文档注释去生成api文档的工具,需要遵循JDoc定义的文档规范进行书写才能生成对应的接口文档,不支持mock数据,权限管理等,不能集中管理Api,强制依赖于Javadoc规范实现,静态页面部署不方便,对离线支持好。

  • 优点是只需要写Javadoc即可无需引入额外配置。
  • 缺点是强制依赖于Javadoc规范,对api测试不友好,生成需额外操作。

2.Swagger2

Swagger是基于注解形式生成api文档的工具,对接口的参数,返回值等都需要加对应的注释才能生成对应的api文档,支持api测试,不支持mock数据,权限管理等,不能集中管理Api,不方便离线,随程序部署而部署。

  • 优点是操作简单,接口生成的比较好,随程序部署而部署使用方便。
  • 缺点是集成麻烦,依赖大量注解,增加开发成本。

3.YDoc

Ydoc是一款基于spring-boot-starter的依赖库,轻量级,不依赖注释,少量依赖注解和使用规范,整体依赖于YApi接口可视化平台,可使用YApi的所有特征,与程序部署分离可集中化管理,支持权限控制等,集成快速高效,配置依赖,加上两行配置程序启动时即可自动生成。

  • 优点是可使用Swagger和YApi平台的特性,侵入性更低,快速集成,引入依赖配置参数即可,不需要额外配置类插拔更方便。
  • 缺点是少量依赖注解和使用规范,仅支持spring-boot工程

2. YDoc的使用方法(基于YApi版本1.9.2)

  1. 需搭建YApi文档平台(YApi官方文档
  2. 项目中引用ydoc-spring-boot-starter依赖
  3. 配置 ydoc.enable = true
  4. 如果想要使用YApi,需在配置文件中配置YApi的url,以及项目的token
  5. 如果想要使用Swagger-bootstrap-ui 需加@EnableSwagger2,访问/doc.html即可使用
  6. 都想要?以上都配置即可。
  7. 额外配置?扫包?不存在的,启动即可使用

如果不能直接依赖说明还没有同步到**maven(1.0.2才支持Swagger-bootstrap-ui )

YDoc版本更新说明

  1. 1.0.1支持YDoc方式生成YApi文档
  2. 1.0.2支持YDoc方式生成Swagger文档
  3. 1.0.3支持Swagger原生注解生成Swagger文档,并同步导入到YApi(方便已经使用了swagger原生注解,但是还想快速导入YApi的用户,拒绝使用YApi轮训导入从我做起
  4. 1.0.4支持自动化测试,钉钉提醒和微服务
  5. 1.0.5支持非native模式生成swagger文档,邮件提醒,web测试报告展示
  6. 1.0.6修复bug
  7. 1.0.7修复匿名内部类解析问题 参考 https://juejin.cn/post/6994640102974554143
  8. 1.0.8修复issue问题 #8 tag: https://github.com/NoBugBoy/YDoc/releases/tag/1.0.8
  9. 1.0.9修复url被覆盖问题,缩小banner
  10. 1.1.0修复返回值泛型被覆盖的问题 #12
  11. 1.1.1修复返回值R<List>解析失败的问题&深层嵌套解析内部属性失败&修复返回值List解析错误
  12. 1.1.2新增通用公共headers配置,和解析@RequestHeader注解
  13. 1.1.3修复不配置headers会空指针问题,和参数必填显示为false等问题
  14. 1.1.4修复requestbody对象内参数使用ParamDesc的required修饰时没有正确的显示在文档上
  15. 1.1.5修复代理类无法被正常生成api的问题&代码重构
  16. 1.1.6修复1.1.5的bug
  17. 1.1.7修复简单返回值无法显示问题,支持map、list优化部分逻辑
       <dependency>
            <groupId>com.github.nobugboy</groupId>
            <artifactId>ydoc-spring-boot-starter</artifactId>
            <version>1.1.7</version>
        </dependency>

final版本是对应正式版本并使用了新的ui库(luck-ui) 建议尝试使用该版本 https://github.com/NoBugBoy/YdocLuckyUi

       <dependency>
            <groupId>com.github.nobugboy</groupId>
            <artifactId>ydoc-spring-boot-starter</artifactId>
            <version>1.1.6.final</version>
        </dependency>
配置名 是否必须
ydoc.token YApi项目中生成的token
ydoc.host YApi的url,例http://localhost:3000
ydoc.headers 配置所有api公共header参数(多个用,分割)
ydoc.enable 程序启动时是否同步到YApi平台
ydoc.print 程序启动时是否打印离线JSON(可手动导入到YApi或其他文档平台)
ydoc.swagger-native 是否启用Swagger原生配置生成文档(方便已经集成了swagger得用户)
ydoc.cloud 是否开启微服务模式
ydoc.autoTest 是否开启自动化测试
ydoc.test.name 自动化测试集合名称,可以多个(自动化测试时使用)
ydoc.id yapi项目id,在设置中查看(自动化测试时使用)
ydoc.yapi.user.email yapi登录邮箱(自动化测试时使用)
ydoc.yapi.user.password yapi登录邮箱密码(自动化测试时使用)
ydoc.accessToken 钉钉机器人token(自动化测试时使用)
ydoc.email.host 邮件服务器(自动化测试时使用)
ydoc.email.password 邮箱pop3,smtp密码(自动化测试时使用)
ydoc.email.password 邮箱pop3,smtp密码(自动化测试时使用)

注意当开启了swagger-native,需要将原工程的swagger依赖删除即可。(YDoc内部使用swagger3.0)

3. YApi的使用步骤(导入YApi,YDoc方式或者原生swagger都支持)

  1. 在搭建好的YApi平台上创建好对应工程的项目
  2. 点开项目,设置-token配置,复制好token粘贴到Java工程的对应配置上
  3. 配置ydoc.enable = true,yapi-host,yapi-token
  4. 启动应用即可
  5. 回到YApi页面,文档生产完毕

4. Swaager3的使用步骤(YDoc生成方式)

  1. 开启@EnableSwagger2
  2. 使用YDoc注解生成方式配置项目
  3. 配置ydoc.enable = true
  4. 启动应用访问 /doc.html

5. 原生Swaager的使用(方便已经使用原生swagger注解的项目)

  1. 和普通swagger一样配置即可,需要配置扫包和swagger注解等
  2. 配置ydoc.enable = true,swagger-native=true
  3. 启动应用访问 /doc.html

6. 自动化测试的使用

  1. 配置测试集合,并定义名称(英文)
  2. 配置ydoc.autoTest=true,ydoc.id,ydoc.test.name
  3. 启动应用自动开始测试(异步)
  4. 测试结束发送报告,参考下面的文章链接

1.0.4支持微服务模式,自动化测试,推送钉钉报告1.0.5非原生模式也支持swagger页面,邮件推送web页面展示

5. YDoc方式生成描述

抛弃大量Swagger注解和配置,仅需在SpringBootWeb开发时必须注解上加额外参数对api或参数进行描述,大大减少了对工程的侵入性,简化开发流程

注解
@RestController 注解中value描述controller的作用,默认为controller名
@RequestMapping 注解中name描述该api的作用,在类上加跟路径时不需要name
@PathVariable 注解中name描述该参数的作用
@GetMapping 注解中name描述该api的作用
@PostMapping 注解中name描述该api的作用
@DeleteMapping 注解中name描述该api的作用
@PutMapping 注解中name描述该api的作用
@RequestHeader 注解中name描述该api的作用

@ParamDesc与@ParamIgnore为YDoc额外的自有注解,其余为SpringBoot的注解,@ParamDesc用来标识实体中参数的描述,@ParamIgnore用来忽略参数不参与生成文档,如不加参数描述则默认为参数的名称。

注解
@ParamDesc 注解中value描述该参数的描述,required是否必须
@ParamIgnore 忽略参数

6. Enum类型

对于Swagger中比较头疼的Enum类型参数描述做了一些优化处理,如果enum类型值,需要在enum中重写toString方法,返回一个字符串作为描述参数,该方式自由度较高,对于code和message可以很好地进行描述。

7.使用YDoc规范建议

  1. 无论是什么请求,如果使用对象接收对象内的基本类型建议使用包装类
  2. 建议在参数上加@ParamDesc用来描述作用
  3. spring提供的注解再原有开发习惯上加name,用来描述RestController或Api的作用
  4. 如有特殊参数例如Bindingresult,登录的用户实体等使用@ParamIgnore进行忽略
  5. 最好不要对象套对象自己比如U -> List 这种

7.话外音

详细步骤请参考YDoc使用图文教程

ydoc's People

Contributors

nobugboy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ydoc's Issues

返回值泛型结构出现覆盖问题

我定义了一个R类,用于封装接口的返回对象,里面有error和data,data是泛型
在controller中接口返回值使用 R、R,ydoc可以正常解析,但从yapi上查看的接口返回结构中User或Teacher谁在最后(swagger的definitions部分),页面展示的结构就是哪个对象的
(将ydoc生产的swagger的json提取出来发现在 defintions结构中对R中data的定义只保留1个bean(要么是Teacher要么是User),而多个接口引用R的返回就导致展示返回值问题)

public R getUser(Long uId) {}
public R getTeacher(Long tId) {}

public R {
private T data;
.......
}

swagger json:
definitions部分:
"R":{"type": "object", "title": "R", "properties":{"data":{"description":"data", "$ref":"#/definitions/Teacher"}}}

接口定义部分:
paths:
/getUser
“responses”:
schema: $ref: "#/definitions/R"
/getTeacher
“responses”:
schema: $ref: "#/definitions/R"

改进建议

1.缺少对@RequestParam@PatchMapping的支持;
2.不应该写死application/json,而是取org.springframework.web.bind.annotation.RequestMapping#consumes

private static void post(String name, String path, JSONObject api, Method method, String outPath, String tag) {
	// 方法对象
	JSONObject apiMethod = Factory.get();
	if (api.containsKey(outPath + path)) {
	    // 路径已经存在
	    apiMethod = (JSONObject) api.get(outPath + path);
	} else {
	    api.put(outPath + path, apiMethod);
	}
	// body
	JSONObject content = Factory.get();
	apiMethod.put("post", content);
	content.put("tags", Collections.singletonList(tag));
	// restfulApi接口的描述/功能
	content.put("summary", name);
	content.put("description", name);

//fixme 这里不应该写死,而是取org.springframework.web.bind.annotation.RequestMapping#consumes,取不到才是application/json,有3处这样的地方

	content.put("consumes", Collections.singleton("application/json"));
	// 处理get参数 1.如果不是pojo则必须带上@RequestParam用来获取参数描述信息
	List<JSONObject> parametersJson = new ArrayList<>();
	addHeader(parametersJson);
	content.put("parameters", parametersJson);
	returnBuild(method, content);
	// restfulApi接口的描述/功能
	baseRequestBody(method.getParameters(), parametersJson);
    }

3.com.github.ydoc.core.RequestTypeMatchingSwagger里有很多重复代码,建议用org.springframework.core.annotation.AnnotationUtils#findAnnotation(java.lang.reflect.Method, java.lang.Class<A>) or 模板模式+策略模式进行重构;

如果嵌套类型是MAP的情况下,会报类型转换异常

如果返回结果是 泛型且嵌套List时,会报类型转换异常。
示例:
定义个ResultEntity 如下

private class ResultEntity<T> {
  private String code;
  private String message;
  private T rows;
}  

定义一个接口

@GetMapping("/test")
public ResultEntity<List<Map<String,String>>(){
return null;
}

这种情况下会报


Caused by: java.lang.ClassCastException: class sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to class java.lang.Class (sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl and java.lang.Class are in module java.base of loader 'bootstrap')
	at com.github.ydoc.core.Core.deepObject(Core.java:135) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.strategy.AbstractStrategy.deepObject(AbstractStrategy.java:56) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.strategy.AbstractStrategy.baseResponse(AbstractStrategy.java:154) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.strategy.AbstractHandler.processResponse(AbstractHandler.java:46) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.strategy.AbstractHandler.init(AbstractHandler.java:36) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.handler.api.PostHandler.generateApi(PostHandler.java:18) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.handler.api.PostHandler.generateApi(PostHandler.java:11) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.StrategySelector.matchAndGenerateApi(StrategySelector.java:33) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.ScanApi.scan(ScanApi.java:111) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at com.github.ydoc.core.ScanApi.afterPropertiesSet(ScanApi.java:210) ~[ydoc-spring-boot-starter-1.1.7.jar:na]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.17.jar:5.3.17]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.17.jar:5.3.17]
	... 16 common frames omitted

spring boot v2.7.3 启动报错,ydoc 1.1.7

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controllerSwagger' defined in class path resource [com/github/ydoc/config/AutoConfig.class]: Invocation of init method failed; nested exception is java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @16e7dcfd
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
at com.waitingresult.Main.main(Main.java:9)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @16e7dcfd
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
at com.github.ydoc.core.Core.proxyToTargetClassName(Core.java:340)
at com.github.ydoc.core.StrategySelector.matchAndGenerateApi(StrategySelector.java:32)
at com.github.ydoc.core.ScanApi.scan(ScanApi.java:111)
at com.github.ydoc.core.ScanApi.afterPropertiesSet(ScanApi.java:210)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
... 16 more

获取不到controller注解信息

  1. 如果controller被cglib代理 那么获取不到controller注解信息

  2. ScanControllerSwagger
    scan() 方法
    // 组装swagger-api
    Class<?> aClass = object.getValue().getClass();
    // 如果有外层路径需要加上
    String outPath = buildBaseUrl(aClass);

public String buildBaseUrl(Class<?> aClass) {
String basePath = "";
if (aClass.isAnnotationPresent(RequestMapping.class)) {
RequestMapping annotation = aClass.getAnnotation(RequestMapping.class);
if (annotation.value().length > 0) {
basePath = annotation.value()[0];
}
}
return basePath;
}
如果controller被代理了 那么outPath永远为空字符串
还应该通过 aClass.getSuperClass().isAnnotationPresent(RequestMapping.class) 判断

  1. 建议添加一个配置项 配置controller路径 扫描这个路径下controller信息

1.1.7启动报错:java.lang.NumberFormatException: For input string: ""

java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:601)
at java.lang.Long.valueOf(Long.java:803)
at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.alibaba.fastjson.util.FieldInfo.get(FieldInfo.java:571)
at com.alibaba.fastjson.serializer.FieldSerializer.getPropertyValueDirect(FieldSerializer.java:143)
at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:284)
at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:154)
at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:360)
at com.alibaba.fastjson.serializer.ASMSerializer_17_Operation.write(Unknown Source)
at com.alibaba.fastjson.serializer.ASMSerializer_16_Path.write(Unknown Source)
at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:271)
at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:44)
at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:360)
at com.alibaba.fastjson.serializer.ASMSerializer_1_Swagger.write(Unknown Source)
at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:312)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:793)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:731)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:688)
at com.github.ydoc.core.ScanControllerSwagger.run(ScanControllerSwagger.java:155)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)

springboot 2.4.5 引入 ydoc 1.1.3 cannot be cast to java.lang.Class

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-12-10 20:43:07.611 ERROR 99056 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controllerSwagger' defined in class path resource [com/github/ydoc/config/AutoConfig.class]: Invocation of init method failed; nested exception is java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.6.jar:5.3.6]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.6.jar:5.3.6]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) [spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.5.jar:2.4.5]
at com.cloud.tenmokucloud.DemoApplication.main(DemoApplication.java:12) [classes/:na]
Caused by: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
at com.github.ydoc.core.RequestTypeMatchingSwagger.deepObject(RequestTypeMatchingSwagger.java:517) ~[ydoc-spring-boot-starter-1.1.3.jar:1.1.3]
at com.github.ydoc.core.RequestTypeMatchingSwagger.returnBuild(RequestTypeMatchingSwagger.java:211) ~[ydoc-spring-boot-starter-1.1.3.jar:1.1.3]
at com.github.ydoc.core.RequestTypeMatchingSwagger.post(RequestTypeMatchingSwagger.java:388) ~[ydoc-spring-boot-starter-1.1.3.jar:1.1.3]
at com.github.ydoc.core.RequestTypeMatchingSwagger.matching(RequestTypeMatchingSwagger.java:47) ~[ydoc-spring-boot-starter-1.1.3.jar:1.1.3]
at com.github.ydoc.core.ScanControllerSwagger.scan(ScanControllerSwagger.java:85) ~[ydoc-spring-boot-starter-1.1.3.jar:1.1.3]
at com.github.ydoc.core.ScanControllerSwagger.afterPropertiesSet(ScanControllerSwagger.java:141) ~[ydoc-spring-boot-starter-1.1.3.jar:1.1.3]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) ~[spring-beans-5.3.6.jar:5.3.6]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-5.3.6.jar:5.3.6]
... 17 common frames omitted

下面是我的 pom 文件


4.0.0

org.springframework.boot
spring-boot-starter-parent
2.4.5


com.cloud
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot

<java.version>1.8</java.version>
<shiro-spring.version>1.6.0</shiro-spring.version>
<shiro-redis.version>3.3.1</shiro-redis.version>
<google.zxing.version>3.3.0</google.zxing.version>
<ydoc.version>1.1.3</ydoc.version>
<knife4j.version>2.0.7</knife4j.version>
<mybatis-plus-boot.version>3.1.2</mybatis-plus-boot.version>
<fastjson.version>1.2.59</fastjson.version>
<mybatis-generator.version>1.3.7</mybatis-generator.version>
<asm.version>3.3.1</asm.version>
<cglib-nodep.version>2.2.2</cglib-nodep.version>
<qiniu-java-sdk.version>7.2.23</qiniu-java-sdk.version>
<pinyin4j.version>2.5.1</pinyin4j.version>
<easypoi.version>4.4.0</easypoi.version>
<commons-codec.version>1.14</commons-codec.version>
<httpclient.version>4.5.3</httpclient.version>
<nacos.version>0.2.7</nacos.version>



org.springframework.boot
spring-boot-starter-web

    <dependency>
        <groupId>com.github.nobugboy</groupId>
        <artifactId>ydoc-spring-boot-starter</artifactId>
        <version>${ydoc.version}</version>
    </dependency>


    <!--mybatis generator-->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>${mybatis-generator.version}</version>
    </dependency>

    <!--db-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>${mybatis-plus-boot.version}</version>
    </dependency>
    <!--shiro 权限-->
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring</artifactId>
        <version>${shiro-spring.version}</version>
    </dependency>

    <!-- shiro+redis缓存插件 -->
    <dependency>
        <groupId>org.crazycake</groupId>
        <artifactId>shiro-redis</artifactId>
        <version>${shiro-redis.version}</version>
    </dependency>

    <!-- cglib beancopy-->
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm</artifactId>
        <version>${asm.version}</version>
    </dependency>
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm-commons</artifactId>
        <version>${asm.version}</version>
    </dependency>
    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm-util</artifactId>
        <version>${asm.version}</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>${cglib-nodep.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>

    <!-- 七牛云对象存储 sdk -->
    <dependency>
        <groupId>com.qiniu</groupId>
        <artifactId>qiniu-java-sdk</artifactId>
        <version>${qiniu-java-sdk.version}</version>
    </dependency>

    <!--zxing  start-->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>${google.zxing.version}</version>
    </dependency>

    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>${google.zxing.version}</version>
    </dependency>
    <!--zxing  end-->


    <!--https://liuyueyi.github.io/quick-media-->
    <!--  <dependency>
          <groupId>com.github.hui.media</groupId>
          <artifactId>qrcode-plugin</artifactId>
          <version>2.5.1</version>
      </dependency>-->

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <!-- httpclient -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient.version}</version>
    </dependency>

    <!--  codec 加密 -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-crypto</artifactId>
        <version>5.7.2</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>1.65</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

springboot 2.5.2 引入 ydoc 1.1.2 报空指针

image

"C:\Program Files (x86)\Java\jdk-9\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59760,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:C:\Users\w.IntelliJIdea2019.2\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "D:\IdeaProjects\spider-man\target\classes;D:\Maven_Repository\org\jsoup\jsoup\1.13.1\jsoup-1.13.1.jar;D:\Maven_Repository\cn\wanghaomiao\JsoupXpath\2.4.3\JsoupXpath-2.4.3.jar;D:\Maven_Repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;D:\Maven_Repository\org\antlr\antlr4-runtime\4.7.2\antlr4-runtime-4.7.2.jar;D:\Maven_Repository\org\slf4j\slf4j-api\1.7.31\slf4j-api-1.7.31.jar;D:\Maven_Repository\cn\afterturn\easypoi-base\4.2.0\easypoi-base-4.2.0.jar;D:\Maven_Repository\org\apache\poi\poi\4.1.1\poi-4.1.1.jar;D:\Maven_Repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;D:\Maven_Repository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\Maven_Repository\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;D:\Maven_Repository\org\apache\poi\poi-ooxml\4.1.1\poi-ooxml-4.1.1.jar;D:\Maven_Repository\org\apache\commons\commons-compress\1.19\commons-compress-1.19.jar;D:\Maven_Repository\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;D:\Maven_Repository\org\apache\poi\poi-ooxml-schemas\4.1.1\poi-ooxml-schemas-4.1.1.jar;D:\Maven_Repository\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;D:\Maven_Repository\ognl\ognl\3.2.6\ognl-3.2.6.jar;D:\Maven_Repository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar;D:\Maven_Repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;D:\Maven_Repository\cn\afterturn\easypoi-annotation\4.2.0\easypoi-annotation-4.2.0.jar;D:\Maven_Repository\cn\hutool\hutool-all\5.7.5\hutool-all-5.7.5.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-starter-web\2.5.2\spring-boot-starter-web-2.5.2.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-starter\2.5.2\spring-boot-starter-2.5.2.jar;D:\Maven_Repository\org\springframework\boot\spring-boot\2.5.2\spring-boot-2.5.2.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-starter-logging\2.5.2\spring-boot-starter-logging-2.5.2.jar;D:\Maven_Repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\Maven_Repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\Maven_Repository\org\apache\logging\log4j\log4j-to-slf4j\2.14.1\log4j-to-slf4j-2.14.1.jar;D:\Maven_Repository\org\apache\logging\log4j\log4j-api\2.14.1\log4j-api-2.14.1.jar;D:\Maven_Repository\org\slf4j\jul-to-slf4j\1.7.31\jul-to-slf4j-1.7.31.jar;D:\Maven_Repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\Maven_Repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-starter-json\2.5.2\spring-boot-starter-json-2.5.2.jar;D:\Maven_Repository\com\fasterxml\jackson\core\jackson-databind\2.12.3\jackson-databind-2.12.3.jar;D:\Maven_Repository\com\fasterxml\jackson\core\jackson-annotations\2.12.3\jackson-annotations-2.12.3.jar;D:\Maven_Repository\com\fasterxml\jackson\core\jackson-core\2.12.3\jackson-core-2.12.3.jar;D:\Maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.3\jackson-datatype-jdk8-2.12.3.jar;D:\Maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.3\jackson-datatype-jsr310-2.12.3.jar;D:\Maven_Repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.3\jackson-module-parameter-names-2.12.3.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.2\spring-boot-starter-tomcat-2.5.2.jar;D:\Maven_Repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.48\tomcat-embed-core-9.0.48.jar;D:\Maven_Repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.48\tomcat-embed-el-9.0.48.jar;D:\Maven_Repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.48\tomcat-embed-websocket-9.0.48.jar;D:\Maven_Repository\org\springframework\spring-web\5.3.8\spring-web-5.3.8.jar;D:\Maven_Repository\org\springframework\spring-beans\5.3.8\spring-beans-5.3.8.jar;D:\Maven_Repository\org\springframework\spring-webmvc\5.3.8\spring-webmvc-5.3.8.jar;D:\Maven_Repository\org\springframework\spring-aop\5.3.8\spring-aop-5.3.8.jar;D:\Maven_Repository\org\springframework\spring-context\5.3.8\spring-context-5.3.8.jar;D:\Maven_Repository\org\springframework\spring-expression\5.3.8\spring-expression-5.3.8.jar;D:\Maven_Repository\com\github\nobugboy\ydoc-spring-boot-starter\1.1.2\ydoc-spring-boot-starter-1.1.2.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-autoconfigure\2.5.2\spring-boot-autoconfigure-2.5.2.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-starter-mail\2.5.2\spring-boot-starter-mail-2.5.2.jar;D:\Maven_Repository\org\springframework\spring-context-support\5.3.8\spring-context-support-5.3.8.jar;D:\Maven_Repository\com\sun\mail\jakarta.mail\1.6.7\jakarta.mail-1.6.7.jar;D:\Maven_Repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;D:\Maven_Repository\com\alibaba\fastjson\1.2.76\fastjson-1.2.76.jar;D:\Maven_Repository\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;D:\Maven_Repository\io\swagger\swagger-annotations\1.5.20\swagger-annotations-1.5.20.jar;D:\Maven_Repository\io\swagger\swagger-models\1.5.20\swagger-models-1.5.20.jar;D:\Maven_Repository\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;D:\Maven_Repository\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;D:\Maven_Repository\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;D:\Maven_Repository\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;D:\Maven_Repository\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;D:\Maven_Repository\com\google\guava\guava\20.0\guava-20.0.jar;D:\Maven_Repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\Maven_Repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;D:\Maven_Repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;D:\Maven_Repository\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;D:\Maven_Repository\com\github\xiaoymin\swagger-bootstrap-ui\1.9.6\swagger-bootstrap-ui-1.9.6.jar;D:\Maven_Repository\org\springframework\boot\spring-boot-configuration-processor\2.5.2\spring-boot-configuration-processor-2.5.2.jar;D:\Maven_Repository\org\projectlombok\lombok\1.18.20\lombok-1.18.20.jar;D:\Maven_Repository\net\bytebuddy\byte-buddy\1.10.22\byte-buddy-1.10.22.jar;D:\Maven_Repository\org\springframework\spring-core\5.3.8\spring-core-5.3.8.jar;D:\Maven_Repository\org\springframework\spring-jcl\5.3.8\spring-jcl-5.3.8.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.4\lib\idea_rt.jar" com.bowu66.spider.SpiderManApplication
Connected to the target VM, address: '127.0.0.1:59760', transport: 'socket'

. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )_
_ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' |
| .__|| ||| |_, | / / / /
=========|
|==============|/=////
:: Spring Boot :: (v2.5.2)

2021-12-08 20:55:05.048 INFO 74844 --- [ main] com.bowu66.spider.SpiderManApplication : Starting SpiderManApplication using Java 9 on lenovo-legion with PID 74844 (D:\IdeaProjects\spider-man\target\classes started by legion in D:\IdeaProjects\spider-man)
2021-12-08 20:55:05.050 INFO 74844 --- [ main] com.bowu66.spider.SpiderManApplication : No active profile set, falling back to default profiles: default
2021-12-08 20:55:05.762 INFO 74844 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2021-12-08 20:55:05.768 INFO 74844 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2021-12-08 20:55:05.769 INFO 74844 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.48]
2021-12-08 20:55:05.829 INFO 74844 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2021-12-08 20:55:05.829 INFO 74844 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 747 ms
2021-12-08 20:55:06.061 INFO 74844 --- [ main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]


( / )( _ ( _ )/ )
\ / )() ))()(( (

() (____/(_)_)
v1.1.2
2021-12-08 20:55:06.211 WARN 74844 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controllerSwagger' defined in class path resource [com/github/ydoc/config/AutoConfig.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
2021-12-08 20:55:06.214 INFO 74844 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2021-12-08 20:55:06.220 INFO 74844 --- [ main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-12-08 20:55:06.233 ERROR 74844 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controllerSwagger' defined in class path resource [com/github/ydoc/config/AutoConfig.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:602) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.8.jar:5.3.8]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.8.jar:5.3.8]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.2.jar:2.5.2]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) [spring-boot-2.5.2.jar:2.5.2]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) [spring-boot-2.5.2.jar:2.5.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) [spring-boot-2.5.2.jar:2.5.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) [spring-boot-2.5.2.jar:2.5.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) [spring-boot-2.5.2.jar:2.5.2]
at com.bowu66.spider.SpiderManApplication.main(SpiderManApplication.java:12) [classes/:na]
Caused by: java.lang.NullPointerException: null
at java.base/java.util.ArrayList.addAll(ArrayList.java:598) ~[na:na]
at com.github.ydoc.core.RequestTypeMatchingSwagger.setHeaders(RequestTypeMatchingSwagger.java:26) ~[ydoc-spring-boot-starter-1.1.2.jar:1.1.2]
at com.github.ydoc.core.ScanControllerSwagger.scan(ScanControllerSwagger.java:83) ~[ydoc-spring-boot-starter-1.1.2.jar:1.1.2]
at com.github.ydoc.core.ScanControllerSwagger.afterPropertiesSet(ScanControllerSwagger.java:141) ~[ydoc-spring-boot-starter-1.1.2.jar:1.1.2]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1845) ~[spring-beans-5.3.8.jar:5.3.8]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1782) ~[spring-beans-5.3.8.jar:5.3.8]
... 16 common frames omitted

Disconnected from the target VM, address: '127.0.0.1:59760', transport: 'socket'

Process finished with exit code 1

image

离线打印的json无法导入到yapi

ydoc:
print: true
enable: true
host: http://yapi.smart-xwork.cn
swagger-native: false

导出的json无法导入到yapi
{"basePath":"/hrp","definitions":{},"info":{"description":"YDoc生成的RestfulApi文档","title":"YDoc(同时支持SwaggerUi和YApi的一款无侵入api文档生成器)","version":"last"},"paths":{},"schemes":["http"],"swagger":"2.0","tags":[{"description":"loginController","name":"loginController"},{"description":"basicAccountCategoryController","name":"basicAccountCategoryController"},{"description":"basicChargeCategoryController","name":"basicChargeCategoryController"},{"description":"basicChargeItemController","name":"basicChargeItemController"},{"description":"basicDeptMappingController","name":"basicDeptMappingController"},{"description":"basicIncomeItemController","name":"basicIncomeItemController"},{"description":"CABasicAccountItemController","name":"CABasicAccountItemController"},{"description":"CABasicAssetCategoryController","name":"CABasicAssetCategoryController"},{"description":"CABasicAssetItemController","name":"CABasicAssetItemController"},{"description":"CABasicCostClassifyController","name":"CABasicCostClassifyController"},{"description":"CABasicCostItemController","name":"CABasicCostItemController"},{"description":"CABasicMaterialCategoryController","name":"CABasicMaterialCategoryController"},{"description":"CABasicMaterialItemController","name":"CABasicMaterialItemController"},{"description":"CACommonDictionaryController","name":"CACommonDictionaryController"},{"description":"CADataPlatformController","name":"CADataPlatformController"},{"description":"helloController","name":"helloController"},{"description":"basicCitizenshipController","name":"basicCitizenshipController"},{"description":"basicDutyController","name":"basicDutyController"},{"description":"basicDutyLevelController","name":"basicDutyLevelController"},{"description":"basicDutySeriesController","name":"basicDutySeriesController"},{"description":"basicEducationController","name":"basicEducationController"},{"description":"basicEducationDegreeController","name":"basicEducationDegreeController"},{"description":"basicEducationTypeController","name":"basicEducationTypeController"},{"description":"basicPersontypeController","name":"basicPersontypeController"},{"description":"basicPoliticsController","name":"basicPoliticsController"},{"description":"basicPostLevelController","name":"basicPostLevelController"},{"description":"basicPostTypeController","name":"basicPostTypeController"},{"description":"basicPracticeController","name":"basicPracticeController"},{"description":"basicSalaryLevelController","name":"basicSalaryLevelController"},{"description":"basicTitleController","name":"basicTitleController"},{"description":"basicTitleLevelController","name":"basicTitleLevelController"},{"description":"basicTitleSeriesController","name":"basicTitleSeriesController"},{"description":"contractController","name":"contractController"},{"description":"humanCommonDictionaryController","name":"humanCommonDictionaryController"},{"description":"humanLeaveApplyController","name":"humanLeaveApplyController"},{"description":"personChangeController","name":"personChangeController"},{"description":"personRetireController","name":"personRetireController"},{"description":"staffController","name":"staffController"},{"description":"wagesFormulaController","name":"wagesFormulaController"},{"description":"wagesItemController","name":"wagesItemController"},{"description":"wagesPersonController","name":"wagesPersonController"},{"description":"wagesProcessController","name":"wagesProcessController"},{"description":"wagesProjectController","name":"wagesProjectController"},{"description":"wagesTaxController","name":"wagesTaxController"},{"description":"wagesTaxDetailController","name":"wagesTaxDetailController"},{"description":"accountingSchemeController","name":"accountingSchemeController"},{"description":"basicDepartmentController","name":"basicDepartmentController"},{"description":"basicDepartmentGradeController","name":"basicDepartmentGradeController"},{"description":"basicDepartmentTypeController","name":"basicDepartmentTypeController"},{"description":"basicItemController","name":"basicItemController"},{"description":"basicRbrvsController","name":"basicRbrvsController"},{"description":"basicTargetComputeController","name":"basicTargetComputeController"},{"description":"basicTargetController","name":"basicTargetController"},{"description":"basicWorkerController","name":"basicWorkerController"},{"description":"basicWorkerOwnershipController","name":"basicWorkerOwnershipController"},{"description":"classAttendController","name":"classAttendController"},{"description":"classItemController","name":"classItemController"},{"description":"commonDictionaryController","name":"commonDictionaryController"},{"description":"specialPeriodController","name":"specialPeriodController"},{"description":"computeFormulaController","name":"computeFormulaController"},{"description":"computeFormulaDetailController","name":"computeFormulaDetailController"},{"description":"computeFunctionController","name":"computeFunctionController"},{"description":"computeProcedureController","name":"computeProcedureController"},{"description":"computeSpecialController","name":"computeSpecialController"},{"description":"computeSpecialFormulaController","name":"computeSpecialFormulaController"},{"description":"computeSpecialProcedureController","name":"computeSpecialProcedureController"},{"description":"deptAttributeController","name":"deptAttributeController"},{"description":"deptTargetValueController","name":"deptTargetValueController"},{"description":"deptTypeSchemeController","name":"deptTypeSchemeController"},{"description":"distributeAutonomyItemController","name":"distributeAutonomyItemController"},{"description":"distributeFactorItemController","name":"distributeFactorItemController"},{"description":"distributeFactorRatioController","name":"distributeFactorRatioController"},{"description":"recordDrgController","name":"recordDrgController"},{"description":"standardDeptMappingController","name":"standardDeptMappingController"},{"description":"standardDrgBaController","name":"standardDrgBaController"},{"description":"standardDrgDeptController","name":"standardDrgDeptController"},{"description":"standardDrgWeightController","name":"standardDrgWeightController"},{"description":"standardItemDetailController","name":"standardItemDetailController"},{"description":"standardOperationComputeController","name":"standardOperationComputeController"},{"description":"standardOperationController","name":"standardOperationController"},{"description":"standardOperationCountController","name":"standardOperationCountController"},{"description":"standardOperationDetailController","name":"standardOperationDetailController"},{"description":"standardOperationMappingController","name":"standardOperationMappingController"},{"description":"standardPfController","name":"standardPfController"},{"description":"standardPfTypeController","name":"standardPfTypeController"},{"description":"standardRbrvsController","name":"standardRbrvsController"},{"description":"standardRbrvsTypeController","name":"standardRbrvsTypeController"},{"description":"standardRecordRbrvsController","name":"standardRecordRbrvsController"},{"description":"standardTimeController","name":"standardTimeController"},{"description":"taskControlController","name":"taskControlController"},{"description":"basicMenuController","name":"basicMenuController"},{"description":"basicModuleController","name":"basicModuleController"},{"description":"basicUnitController","name":"basicUnitController"},{"description":"companyController","name":"companyController"},{"description":"customColumnController","name":"customColumnController"},{"description":"departmentAttributeController","name":"departmentAttributeController"},{"description":"departmentClassifyController","name":"departmentClassifyController"},{"description":"departmentController","name":"departmentController"},{"description":"departmentMedinurseController","name":"departmentMedinurseController"},{"description":"departmentSharelevelController","name":"departmentSharelevelController"},{"description":"holidayController","name":"holidayController"},{"description":"parameterController","name":"parameterController"},{"description":"roleInfoController","name":"roleInfoController"},{"description":"roleMenuRightsController","name":"roleMenuRightsController"},{"description":"swapItemController","name":"swapItemController"},{"description":"swapSqlConfController","name":"swapSqlConfController"},{"description":"systemFileDownloadController","name":"systemFileDownloadController"},{"description":"systemFileUploadController","name":"systemFileUploadController"},{"description":"userInfoController","name":"userInfoController"}]}

响应泛型对象时,Yapi不显示泛型属性

响应泛型对象:
public class ResultModel implements Serializable {
private int code;
private String text;
private T data;
}

Yapi显示:
code | integer | 非必须 |   | http状态码 |  
data | object | 非必须 |   | data | 备注: data
text | string | 非必须 |   | 描述

问题如下:
data泛型是个VO,yapi上不显示VO以下属性,请问这个怎么解决?

Post,对像复杂嵌套问题

当对像当中嵌套A对像,A对像在嵌套List实体,启动就会报错。经排查,这类RequestTypeMatchingSwagger,388行,//对象 先解析desc
Class declaringClass = declaredField.getClass();改成Class declaringClass = declaredField.getType();就可以了。感谢作者提供了这么方便的工具,省着自己录了。感谢

springboot版本 1.5.9 & spring版本4.3.13 启动报错

报错信息
Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : org.springframework.boot.autoconfigure.BackgroundPreinitializer
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:413)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:392)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:383)
at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:251)
at org.springframework.boot.SpringApplication.(SpringApplication.java:225)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
at com.douyu.wsd.yapi.example.YApiApplication.main(YApiApplication.java:19)
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/NativeDetector
at org.springframework.boot.autoconfigure.BackgroundPreinitializer.(BackgroundPreinitializer.java:71)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:409)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.springframework.core.NativeDetector
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 14 more

[启动失败] NPE:'controllerSwagger' & DocApi api (size=0)

我的项目从未引用过接口文档,今天刷B站所以来到了这里,按文档(版本1.1.6.final)做,跑不起来。看文档、视频、议题,无数次调试想找到创建实例时在哪里失败,一路断点找原因

ID Descripttion Screenshot
1 RequestTypeMatchingSwagger.matching(api); 追到了这行,因为此后五六条栈帧会跳转 Spring 容器代理,大概说 BeanFactory 创建单例失败了,向上层抛出 NPE。这段代码,它似乎在扫描我项目文件中符合 Swagger 注解类型的特征,现在找到 0 个,匹配 0,就销毁 Bean 单例了。 ydoc-bug
2 所以为什么这里 DocApi 类型的 api 是零个值呢?顺着 api 的值去找线索:比如请求路径 outPath=/order/mqmessage找到控制器,找到 update 方法。这些是人人开源插件自动生成的代码,请求类型注解都是 @RequestMapping image
3 现在点进匹配方法 matching 看匹配规则,似乎它扫描控制器的所有注解后,在做统计。由于上一步 DocApi 为空(size=0),获取不到 api 的方法名称,也不能添加路径赋值。 image
4 那么,我们回到上一步,具体怎么构造 / 更新 DocApi 的呢?如图,看上去每个属性被参数赋值,但返回后就 size=0api 点开看不到值了。实际步进每一行 set 语句,发现赋值方法都失效了,DOC_API 仍是空值(空构造器)。推测原因final static 修饰的属性,只能手动赋值一次(仅限两种方式:声明时赋值,或静态代码块中赋值)。上面图 1 中第 27 行语句首次调用 DOC_API,意味着通过无参构造方法实例化,获得空值(空构造器),已经消耗了一次机会,它不能被修改了。参考文章 Java 中为 final 变量赋值的几种方式 image

我的配置

ydoc:
  enable: true
  host: http://111.222.333.444:40001
  token: 81***6a
  headers: 

sping:
    mvc:
        date-format: yyyy-MM-dd HH:mm:ss
        pathmatch:
            matching-strategy: ant_path_matcher

备注

  • @EnableSwagger2 启动类注解,有无都会报错
  • headers:空值,有无此属性都会报错。来自文章评论区
  • pathmatch:有无此属性都会报错。来自议题
  • 订单微服务:依赖较多,ydoc 放在公共依赖中。详见文末

启动日志

C:\Users\miozus\.jdks\corretto-1.8.0_322\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60731,suspend=y,server=n -Dvisualvm.id=8949864274300 -Xmx100m -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:E:\JetBrains\Toolbox\apps\IDEA-U\ch-1\221.4165.146\plugins\java\lib\rt\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\charsets.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\access-bridge-64.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\cldrdata.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\dnsns.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\jaccess.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\jfxrt.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\localedata.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\nashorn.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\sunec.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\sunjce_provider.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\sunmscapi.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\sunpkcs11.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\ext\zipfs.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\jce.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\jfr.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\jfxswt.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\jsse.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\management-agent.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\resources.jar;C:\Users\miozus\.jdks\corretto-1.8.0_322\jre\lib\rt.jar;E:\projects\IdeaProjects\gulimall\gulimall-order\target\classes;D:\server\maven\repository\com\alipay\sdk\alipay-sdk-java\4.22.30.ALL\alipay-sdk-java-4.22.30.ALL.jar;D:\server\maven\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\server\maven\repository\com\alibaba\fastjson\1.2.78\fastjson-1.2.78.jar;D:\server\maven\repository\org\bouncycastle\bcprov-jdk15on\1.62\bcprov-jdk15on-1.62.jar;D:\server\maven\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;D:\server\maven\repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-data-redis\2.3.2.RELEASE\spring-boot-starter-data-redis-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter\2.3.2.RELEASE\spring-boot-starter-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot\2.3.2.RELEASE\spring-boot-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-autoconfigure\2.3.2.RELEASE\spring-boot-autoconfigure-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-logging\2.3.2.RELEASE\spring-boot-starter-logging-2.3.2.RELEASE.jar;D:\server\maven\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\server\maven\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\server\maven\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\server\maven\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\server\maven\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\server\maven\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\server\maven\repository\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;D:\server\maven\repository\org\springframework\data\spring-data-redis\2.3.2.RELEASE\spring-data-redis-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\data\spring-data-keyvalue\2.3.2.RELEASE\spring-data-keyvalue-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\data\spring-data-commons\2.3.2.RELEASE\spring-data-commons-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-tx\5.2.8.RELEASE\spring-tx-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-oxm\5.2.8.RELEASE\spring-oxm-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-aop\5.2.8.RELEASE\spring-aop-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-context-support\5.2.8.RELEASE\spring-context-support-5.2.8.RELEASE.jar;D:\server\maven\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\server\maven\repository\io\lettuce\lettuce-core\5.3.2.RELEASE\lettuce-core-5.3.2.RELEASE.jar;D:\server\maven\repository\io\netty\netty-common\4.1.51.Final\netty-common-4.1.51.Final.jar;D:\server\maven\repository\io\netty\netty-handler\4.1.51.Final\netty-handler-4.1.51.Final.jar;D:\server\maven\repository\io\netty\netty-resolver\4.1.51.Final\netty-resolver-4.1.51.Final.jar;D:\server\maven\repository\io\netty\netty-buffer\4.1.51.Final\netty-buffer-4.1.51.Final.jar;D:\server\maven\repository\io\netty\netty-codec\4.1.51.Final\netty-codec-4.1.51.Final.jar;D:\server\maven\repository\io\netty\netty-transport\4.1.51.Final\netty-transport-4.1.51.Final.jar;D:\server\maven\repository\io\projectreactor\reactor-core\3.3.8.RELEASE\reactor-core-3.3.8.RELEASE.jar;D:\server\maven\repository\org\reactivestreams\reactive-streams\1.0.3\reactive-streams-1.0.3.jar;D:\server\maven\repository\org\springframework\session\spring-session-data-redis\2.3.0.RELEASE\spring-session-data-redis-2.3.0.RELEASE.jar;D:\server\maven\repository\org\springframework\session\spring-session-core\2.3.0.RELEASE\spring-session-core-2.3.0.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-jcl\5.2.8.RELEASE\spring-jcl-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-amqp\2.3.2.RELEASE\spring-boot-starter-amqp-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-messaging\5.2.8.RELEASE\spring-messaging-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-beans\5.2.8.RELEASE\spring-beans-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\amqp\spring-rabbit\2.2.9.RELEASE\spring-rabbit-2.2.9.RELEASE.jar;D:\server\maven\repository\com\rabbitmq\amqp-client\5.9.0\amqp-client-5.9.0.jar;D:\server\maven\repository\org\springframework\amqp\spring-amqp\2.2.9.RELEASE\spring-amqp-2.2.9.RELEASE.jar;D:\server\maven\repository\org\springframework\retry\spring-retry\1.2.5.RELEASE\spring-retry-1.2.5.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-context\5.2.8.RELEASE\spring-context-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-thymeleaf\2.3.2.RELEASE\spring-boot-starter-thymeleaf-2.3.2.RELEASE.jar;D:\server\maven\repository\org\thymeleaf\thymeleaf-spring5\3.0.11.RELEASE\thymeleaf-spring5-3.0.11.RELEASE.jar;D:\server\maven\repository\org\thymeleaf\thymeleaf\3.0.11.RELEASE\thymeleaf-3.0.11.RELEASE.jar;D:\server\maven\repository\org\attoparser\attoparser\2.0.5.RELEASE\attoparser-2.0.5.RELEASE.jar;D:\server\maven\repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;D:\server\maven\repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.4.RELEASE\thymeleaf-extras-java8time-3.0.4.RELEASE.jar;E:\projects\IdeaProjects\gulimall\gulimall-common\target\classes;D:\server\maven\repository\cn\hutool\hutool-all\5.7.20\hutool-all-5.7.20.jar;D:\server\maven\repository\com\baomidou\mybatis-plus-boot-starter\3.3.1\mybatis-plus-boot-starter-3.3.1.jar;D:\server\maven\repository\com\baomidou\mybatis-plus\3.3.1\mybatis-plus-3.3.1.jar;D:\server\maven\repository\com\baomidou\mybatis-plus-extension\3.3.1\mybatis-plus-extension-3.3.1.jar;D:\server\maven\repository\com\baomidou\mybatis-plus-core\3.3.1\mybatis-plus-core-3.3.1.jar;D:\server\maven\repository\com\baomidou\mybatis-plus-annotation\3.3.1\mybatis-plus-annotation-3.3.1.jar;D:\server\maven\repository\com\github\jsqlparser\jsqlparser\3.1\jsqlparser-3.1.jar;D:\server\maven\repository\org\mybatis\mybatis\3.5.3\mybatis-3.5.3.jar;D:\server\maven\repository\org\mybatis\mybatis-spring\2.0.3\mybatis-spring-2.0.3.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-jdbc\2.3.2.RELEASE\spring-boot-starter-jdbc-2.3.2.RELEASE.jar;D:\server\maven\repository\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;D:\server\maven\repository\org\springframework\spring-jdbc\5.2.8.RELEASE\spring-jdbc-5.2.8.RELEASE.jar;D:\server\maven\repository\org\projectlombok\lombok\1.18.12\lombok-1.18.12.jar;D:\server\maven\repository\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar;D:\server\maven\repository\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\server\maven\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\server\maven\repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;D:\server\maven\repository\org\hibernate\validator\hibernate-validator\6.1.5.Final\hibernate-validator-6.1.5.Final.jar;D:\server\maven\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\server\maven\repository\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\server\maven\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\server\maven\repository\com\alibaba\cloud\spring-cloud-starter-alibaba-nacos-discovery\2.2.5.RELEASE\spring-cloud-starter-alibaba-nacos-discovery-2.2.5.RELEASE.jar;D:\server\maven\repository\com\alibaba\cloud\spring-cloud-alibaba-commons\2.2.5.RELEASE\spring-cloud-alibaba-commons-2.2.5.RELEASE.jar;D:\server\maven\repository\com\alibaba\nacos\nacos-client\1.4.1\nacos-client-1.4.1.jar;D:\server\maven\repository\com\alibaba\nacos\nacos-common\1.4.1\nacos-common-1.4.1.jar;D:\server\maven\repository\commons-io\commons-io\2.2\commons-io-2.2.jar;D:\server\maven\repository\org\apache\httpcomponents\httpasyncclient\4.1.4\httpasyncclient-4.1.4.jar;D:\server\maven\repository\org\apache\httpcomponents\httpcore-nio\4.4.13\httpcore-nio-4.4.13.jar;D:\server\maven\repository\com\alibaba\nacos\nacos-api\1.4.1\nacos-api-1.4.1.jar;D:\server\maven\repository\com\google\guava\guava\29.0-jre\guava-29.0-jre.jar;D:\server\maven\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\server\maven\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\server\maven\repository\org\checkerframework\checker-qual\2.11.1\checker-qual-2.11.1.jar;D:\server\maven\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;D:\server\maven\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;D:\server\maven\repository\commons-codec\commons-codec\1.14\commons-codec-1.14.jar;D:\server\maven\repository\com\fasterxml\jackson\core\jackson-core\2.11.1\jackson-core-2.11.1.jar;D:\server\maven\repository\io\prometheus\simpleclient\0.5.0\simpleclient-0.5.0.jar;D:\server\maven\repository\com\alibaba\spring\spring-context-support\1.0.10\spring-context-support-1.0.10.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-context\2.2.4.RELEASE\spring-cloud-context-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.2.4.RELEASE\spring-cloud-starter-netflix-ribbon-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.2.4.RELEASE\spring-cloud-starter-netflix-archaius-2.2.4.RELEASE.jar;D:\server\maven\repository\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;D:\server\maven\repository\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;D:\server\maven\repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;D:\server\maven\repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;D:\server\maven\repository\javax\inject\javax.inject\1\javax.inject-1.jar;D:\server\maven\repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;D:\server\maven\repository\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;D:\server\maven\repository\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;D:\server\maven\repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\server\maven\repository\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;D:\server\maven\repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;D:\server\maven\repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;D:\server\maven\repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;D:\server\maven\repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;D:\server\maven\repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;D:\server\maven\repository\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;D:\server\maven\repository\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;D:\server\maven\repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;D:\server\maven\repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;D:\server\maven\repository\com\alibaba\cloud\spring-cloud-starter-alibaba-nacos-config\2.2.5.RELEASE\spring-cloud-starter-alibaba-nacos-config-2.2.5.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-web\5.2.8.RELEASE\spring-web-5.2.8.RELEASE.jar;D:\server\maven\repository\com\github\nobugboy\ydoc-spring-boot-starter\1.1.6.final\ydoc-spring-boot-starter-1.1.6.final.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-mail\2.3.2.RELEASE\spring-boot-starter-mail-2.3.2.RELEASE.jar;D:\server\maven\repository\com\sun\mail\jakarta.mail\1.6.5\jakarta.mail-1.6.5.jar;D:\server\maven\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;D:\server\maven\repository\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;D:\server\maven\repository\io\swagger\swagger-annotations\1.5.20\swagger-annotations-1.5.20.jar;D:\server\maven\repository\io\swagger\swagger-models\1.5.20\swagger-models-1.5.20.jar;D:\server\maven\repository\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;D:\server\maven\repository\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;D:\server\maven\repository\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;D:\server\maven\repository\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;D:\server\maven\repository\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;D:\server\maven\repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;D:\server\maven\repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;D:\server\maven\repository\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;D:\server\maven\repository\com\github\nobugboy\lucky-ui\release-1.0.2\lucky-ui-release-1.0.2.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-web\2.3.2.RELEASE\spring-boot-starter-web-2.3.2.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-json\2.3.2.RELEASE\spring-boot-starter-json-2.3.2.RELEASE.jar;D:\server\maven\repository\com\fasterxml\jackson\core\jackson-databind\2.11.1\jackson-databind-2.11.1.jar;D:\server\maven\repository\com\fasterxml\jackson\core\jackson-annotations\2.11.1\jackson-annotations-2.11.1.jar;D:\server\maven\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.1\jackson-datatype-jdk8-2.11.1.jar;D:\server\maven\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.1\jackson-datatype-jsr310-2.11.1.jar;D:\server\maven\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.1\jackson-module-parameter-names-2.11.1.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-tomcat\2.3.2.RELEASE\spring-boot-starter-tomcat-2.3.2.RELEASE.jar;D:\server\maven\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.37\tomcat-embed-core-9.0.37.jar;D:\server\maven\repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\server\maven\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.37\tomcat-embed-websocket-9.0.37.jar;D:\server\maven\repository\org\springframework\spring-webmvc\5.2.8.RELEASE\spring-webmvc-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\spring-expression\5.2.8.RELEASE\spring-expression-5.2.8.RELEASE.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.2.4.RELEASE\spring-cloud-starter-openfeign-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-starter\2.2.4.RELEASE\spring-cloud-starter-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\security\spring-security-rsa\1.0.9.RELEASE\spring-security-rsa-1.0.9.RELEASE.jar;D:\server\maven\repository\org\bouncycastle\bcpkix-jdk15on\1.64\bcpkix-jdk15on-1.64.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-openfeign-core\2.2.4.RELEASE\spring-cloud-openfeign-core-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.2.4.RELEASE\spring-cloud-netflix-ribbon-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.2.4.RELEASE\spring-cloud-netflix-archaius-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\boot\spring-boot-starter-aop\2.3.2.RELEASE\spring-boot-starter-aop-2.3.2.RELEASE.jar;D:\server\maven\repository\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar;D:\server\maven\repository\io\github\openfeign\form\feign-form-spring\3.8.0\feign-form-spring-3.8.0.jar;D:\server\maven\repository\io\github\openfeign\form\feign-form\3.8.0\feign-form-3.8.0.jar;D:\server\maven\repository\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;D:\server\maven\repository\org\springframework\cloud\spring-cloud-commons\2.2.4.RELEASE\spring-cloud-commons-2.2.4.RELEASE.jar;D:\server\maven\repository\org\springframework\security\spring-security-crypto\5.3.3.RELEASE\spring-security-crypto-5.3.3.RELEASE.jar;D:\server\maven\repository\io\github\openfeign\feign-core\10.10.1\feign-core-10.10.1.jar;D:\server\maven\repository\io\github\openfeign\feign-slf4j\10.10.1\feign-slf4j-10.10.1.jar;D:\server\maven\repository\io\github\openfeign\feign-hystrix\10.10.1\feign-hystrix-10.10.1.jar;D:\server\maven\repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;D:\server\maven\repository\com\google\code\findbugs\jsr305\3.0.1\jsr305-3.0.1.jar;D:\server\maven\repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;D:\server\maven\repository\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;D:\server\maven\repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;D:\server\maven\repository\net\bytebuddy\byte-buddy\1.10.13\byte-buddy-1.10.13.jar;D:\server\maven\repository\org\springframework\spring-core\5.2.8.RELEASE\spring-core-5.2.8.RELEASE.jar;E:\JetBrains\Toolbox\apps\IDEA-U\ch-1\221.4165.146\lib\idea_rt.jar cn.miozus.gulimall.order.GulimallOrderApplication
Connected to the target VM, address: '127.0.0.1:60731', transport: 'socket'

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.2.RELEASE)

2022-02-18 20:29:21.439  INFO 5900 --- [           main] c.a.n.c.c.impl.LocalConfigInfoProcessor  : LOCAL_SNAPSHOT_PATH:C:\Users\miozus\nacos\config
2022-02-18 20:29:21.470  INFO 5900 --- [           main] c.a.nacos.client.config.impl.Limiter     : limitTime:5.0
2022-02-18 20:29:21.639  INFO 5900 --- [           main] c.a.nacos.client.config.utils.JvmUtil    : isMultiInstance:false
2022-02-18 20:29:22.704  WARN 5900 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[gulimall-order] & group[DEFAULT_GROUP]
2022-02-18 20:29:22.732  WARN 5900 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[gulimall-order.properties] & group[DEFAULT_GROUP]
2022-02-18 20:29:22.732  INFO 5900 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-gulimall-order.properties,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-gulimall-order,DEFAULT_GROUP'}, BootstrapPropertySource {name='bootstrapProperties-ydoc.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-cache.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-pay.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-feign.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-redis.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-threadpool.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-rabbitmq.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-other.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-mybatis.yml,pro'}, BootstrapPropertySource {name='bootstrapProperties-datasource.yml,pro'}]
2022-02-18 20:29:22.763  INFO 5900 --- [           main] c.m.g.order.GulimallOrderApplication     : No active profile set, falling back to default profiles: default
2022-02-18 20:29:23.221  INFO 5900 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2022-02-18 20:29:23.221  INFO 5900 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2022-02-18 20:29:23.237  INFO 5900 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8ms. Found 0 Redis repository interfaces.
2022-02-18 20:29:23.394  INFO 5900 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=bed9f933-1953-3f2b-a74e-16adf5f487bc
2022-02-18 20:29:23.815  INFO 5900 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-02-18 20:29:23.831  INFO 5900 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-02-18 20:29:23.831  INFO 5900 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.37]
2022-02-18 20:29:23.909  INFO 5900 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-02-18 20:29:23.909  INFO 5900 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1130 ms
 _ _   |_  _ _|_. ___ _ |    _ 
| | |\/|_)(_| | |_\  |_)||_|_\ 
     /               |         
                        3.3.1 
2022-02-18 20:29:26.833  WARN 5900 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2022-02-18 20:29:26.833  INFO 5900 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2022-02-18 20:29:26.837  WARN 5900 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
2022-02-18 20:29:26.837  INFO 5900 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2022-02-18 20:29:27.401  INFO 5900 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'Nacos-Watch-Task-Scheduler'
 _  _  ____  _____  ___ 
( \/ )(  _ \(  _  )/ __)
 \  /  )(_) ))(_)(( (__ 
 (__) (____/(_____)\___)
                v1.1.6.final   
2022-02-18 20:41:23.033  WARN 5900 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controllerSwagger' defined in class path resource [com/github/ydoc/config/AutoConfig.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
2022-02-18 20:41:23.033  WARN 5900 --- [           main] o.s.b.f.support.DisposableBeanAdapter    : Destroy method 'close' on bean with name 'nacosServiceRegistry' threw an exception: java.lang.NullPointerException
2022-02-18 20:41:23.343  INFO 5900 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2022-02-18 20:41:23.457  INFO 5900 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-02-18 20:41:23.488 ERROR 5900 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'controllerSwagger' defined in class path resource [com/github/ydoc/config/AutoConfig.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) ~[spring-context-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.2.RELEASE.jar:2.3.2.RELEASE]
	at cn.miozus.gulimall.order.GulimallOrderApplication.main(GulimallOrderApplication.java:26) [classes/:na]
Caused by: java.lang.NullPointerException: null
	at com.github.ydoc.core.handler.api.RequestHandler.generateApi(RequestHandler.java:16) ~[ydoc-spring-boot-starter-1.1.6.final.jar:1.1.6.final]
	at com.github.ydoc.core.handler.api.RequestHandler.generateApi(RequestHandler.java:10) ~[ydoc-spring-boot-starter-1.1.6.final.jar:1.1.6.final]
	at com.github.ydoc.core.RequestTypeMatchingSwagger.matching(RequestTypeMatchingSwagger.java:67) ~[ydoc-spring-boot-starter-1.1.6.final.jar:1.1.6.final]
	at com.github.ydoc.core.ScanControllerSwagger.scan(ScanControllerSwagger.java:105) ~[ydoc-spring-boot-starter-1.1.6.final.jar:1.1.6.final]
	at com.github.ydoc.core.ScanControllerSwagger.afterPropertiesSet(ScanControllerSwagger.java:163) ~[ydoc-spring-boot-starter-1.1.6.final.jar:1.1.6.final]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
	... 17 common frames omitted

2022-02-18 20:41:24.247  WARN 5900 --- [       Thread-2] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Start destroying common HttpClient
2022-02-18 20:41:24.247  WARN 5900 --- [       Thread-2] c.a.n.common.http.HttpClientBeanHolder   : [HttpClientBeanHolder] Destruction of the end
Disconnected from the target VM, address: '127.0.0.1:60731', transport: 'socket'

Process finished with exit code 1

项目依赖 Maven

<!-- 公共依赖(全部版本)-->
<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <lombok.version>1.18.22</lombok.version>
        <mysql.version>8.0.26</mysql.version>
        <mybatis.plus.boot.version>3.3.1</mybatis.plus.boot.version>
        <servlet.api.version>2.5</servlet.api.version>
        <commons.lang.version>2.6</commons.lang.version>
        <httpcore.version>4.4.15</httpcore.version>
        <fastjson.version>1.2.79</fastjson.version>
        <validation.api.version>2.0.1.Final</validation.api.version>
        <hutool.all.version>5.7.20</hutool.all.version>
        <hibernate.validator.version>7.0.1.Final</hibernate.validator.version>
        <spring.web.version>5.2.8.RELEASE</spring.web.version>
        <ydoc.spring.boot.starter.version>1.1.6.final</ydoc.spring.boot.starter.version>
</properties>

<!-- 订单微服务依赖-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>cn.miozus</groupId>
    <artifactId>gulimall-order</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gulimall-order</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
        <spring-cloud.version>Hoxton.SR7</spring-cloud.version>
    </properties>
    <dependencies>
        <!-- 支付宝SDK -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.22.30.ALL</version>
        </dependency>
        <!-- 分布式缓存 redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--  统一储存 session 跨域共享    -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>
        <!--    消息队列 RabbitMQ    -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <!--  前端页面渲染模板  -->
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!--    公共依赖包    -->
        <dependency>
            <groupId>cn.miozus.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--    初始勾选的两个依赖    -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

**问题控制器代码如下:这样设置就无法生成**

问题控制器代码如下:这样设置就无法生成
@RestController
@RequestMapping("test/")
public class TestController {
@GetMapping(value = "/get/{id}")
public User test(@ParamDesc("id") @PathVariable(value = "id") String id){
User u = new User();
return u;
}
@GetMapping(value = "/last")
public User test(User user){
return user;
}
@PostMapping(value = "/post")
public User test1(@RequestBody User user){
System.out.println(user);
return user;
}
}

Originally posted by @HelloZYHs in #2 (comment)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.