标签: springfox

Spring Boot 2.6.0 / Spring Fox 3 - 无法启动 bean 'documentationPluginsBootstrapper'

我正在尝试使用OpenJDK 15、Spring Boot 2.6.0、Springfox 3 启动 Spring Boot 项目。

我们正在做一个项目,取代Netty作为 Web 服务器并使用 Jetty 来代替,因为我们不需要非阻塞环境。

在代码中我们主要依赖Reactor API(Flux、Mono),所以我们无法删除org.springframework.boot:spring-boot-starter-webflux依赖。

我在一个新项目中复制了我们遇到的问题:https://github.com/jvacaq/spring-fox

我发现build.gradle文件中的这些行是问题的根源。

compile("org.springframework.boot:spring-boot-starter-web") {
   exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
Run Code Online (Sandbox Code Playgroud)

这是build.gradle文件:

plugins {
    id 'org.springframework.boot' version '2.6.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web") {
        exclude module: "spring-boot-starter-tomcat"
    }
    compile("org.springframework.boot:spring-boot-starter-jetty")
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    implementation "io.springfox:springfox-boot-starter:3.0.0" …
Run Code Online (Sandbox Code Playgroud)

java gradle spring-boot springfox java-11

111
推荐指数
5
解决办法
15万
查看次数

Springfox 3.0.0 无法与 Spring Boot 2.6.0 一起使用

Springfox 3.0.0 无法与 Spring Boot 2.6.0 一起使用,升级后出现以下错误

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
    at java.base/java.lang.Iterable.forEach(Iterable.java:75)
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290)
    at com.enkindle.AntivirusApplication.main(AntivirusApplication.java:16)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null
    at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWrapper.java:56)
    at springfox.documentation.RequestHandler.sortedPaths(RequestHandler.java:113)
    at …
Run Code Online (Sandbox Code Playgroud)

java swagger spring-boot springfox spring-boot-2.6.0

66
推荐指数
5
解决办法
10万
查看次数

如何配置Spring Security以允许无需身份验证即可访问Swagger URL

我的项目有Spring Security.主要问题:无法访问http:// localhost:8080/api/v2/api-docs中的 swagger URL .它表示缺少或无效的授权标头.

浏览器窗口的屏幕截图 My pom.xml包含以下条目

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.4.0</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.4.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

SwaggerConfig:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2).select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo());
}

private ApiInfo apiInfo() {
    ApiInfo apiInfo = new ApiInfo("My REST API", "Some custom description of API.", "API TOS", "Terms of service", "myeaddress@company.com", "License of API", "API license URL");
    return apiInfo;
}
Run Code Online (Sandbox Code Playgroud)

AppConfig的:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.musigma.esp2" })
@Import(SwaggerConfig.class) …
Run Code Online (Sandbox Code Playgroud)

spring-mvc swagger swagger-ui swagger-2.0 springfox

65
推荐指数
8
解决办法
8万
查看次数

如何在 Spring Boot 3 上运行 Swagger 3

使用带有 Java17 和 Spring Boot 3.0.0 的全新 Spring Initialzr,以及 Springfox Swagger 3 的 pom.xml 的额外补充,我一生都无法让 Swagger 页面工作。相反,我得到了带有 404 的白标错误页面。

Pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>3.0.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
    <java.version>17</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </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>
        </plugin>
    </plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)

此Github 问题页面 …

swagger spring-boot springfox

47
推荐指数
6
解决办法
10万
查看次数

swagger @ApiModelProperty List <String>属性的示例值

我有一个类,其中有一个属性 List<String>

public class MyClass {
    ....
    @ApiModelProperty(position = 2)
    private List<String> productIdentifiers;
    ....
}
Run Code Online (Sandbox Code Playgroud)

此代码生成示例值,如下所示:

{
  "customerId": "1001",
  "productIdentifiers": [
    "string"
  ],
  "statuses": [
    "NEW"
  ]
}
Run Code Online (Sandbox Code Playgroud)

此处显示的示例值无效.我期望的示例值应该是:

{
  "customerId": "1001",
  "productIdentifiers": [
    "PRD1",
    "PRD2",
    "PRD3"
  ],
  "statuses": [
    "NEW"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试将示例属性传递如下,但它没有生成正确的值:

@ApiModelProperty(position = 2, example = "PRD1, PRD2, PRD3")
// This generates -> "productIdentifiers": "PRD1, PRD2, PRD3" // Its not json array

@ApiModelProperty(position = 2, example = "[\"PRD1\", \"PRD2\", \"PRD3\"]")
// This generates -> "productIdentifiers": "[\"PRD1\", \"PRD2\", …
Run Code Online (Sandbox Code Playgroud)

java swagger springfox

38
推荐指数
4
解决办法
4万
查看次数

不推荐使用Api注释的描述

在Swagger中,不推荐使用@Api注释description.

有没有更新的方式来提供描述?

swagger springfox

36
推荐指数
3
解决办法
2万
查看次数

Springfox swagger 在 spring boot 2.2.0 中不起作用

我想将 spring boot v2.1.9 升级到 2.2.0。但是升级后我得到了一些例外,它说 spring fox 使用的是旧版本的 spring-plugin-core。

有没有其他替代解决方案,或者我需要放弃 springfox 插件吗?

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    springfox.documentation.spring.web.plugins.DocumentationPluginsManager.createContextBuilder(DocumentationPluginsManager.java:152)

The following method did not exist:

    org.springframework.plugin.core.PluginRegistry.getPluginFor(Ljava/lang/Object;Lorg/springframework/plugin/core/Plugin;)Lorg/springframework/plugin/core/Plugin;

The method's class, org.springframework.plugin.core.PluginRegistry, is available from the following locations:

    jar:file:/C:/Users/regosa/.m2/repository/org/springframework/plugin/spring-plugin-core/2.0.0.RELEASE/spring-plugin-core-2.0.0.RELEASE.jar!/org/springframework/plugin/core/PluginRegistry.class

It was loaded from the following location:

    file:/C:/Users/regosa/.m2/repository/org/springframework/plugin/spring-plugin-core/2.0.0.RELEASE/spring-plugin-core-2.0.0.RELEASE.jar


Action:

Correct the classpath of your application so that it contains a single, …
Run Code Online (Sandbox Code Playgroud)

spring spring-data-jpa spring-boot swagger-2.0 springfox

31
推荐指数
4
解决办法
3万
查看次数

Spring + Springfox + Header参数

@RequestMapping(...)
public Foo getFoo(@HeaderParam("header") final String header) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

添加一个@HeaderParam方法参数如上所述springfox选择它,当我看到swagger-ui时它有一个标题字段.这正是我想要的.有没有办法告诉springfox在一组方法中包含这个头参数而不必在方法本身上包含参数?我们真正要做的是使用标头的servlet过滤器,我们希望通过swagger-ui轻松设置它.

spring swagger-ui springfox

29
推荐指数
2
解决办法
2万
查看次数

使用springfox和Swagger2时,为什么v2/api-docs是默认URL?

我刚开始按照这个指南开始使用招摇,但我发现了一些非常奇怪的东西对我来说毫无意义.

据我所知,当您拥有API版本号为2的文档时,应使用v2/api-docs.

所以,默认应该只是api-docs,但由于一些奇怪的原因,我发现默认是v2/api-docs.

检查库文档我发现了这个.

如何在不能使用v2的情况下覆盖该值?(当我的API将达到v2但我也想展示旧版文档).

或许我使用v2的概念是错误的?有人可以帮我弄这个吗?

java swagger springfox

25
推荐指数
1
解决办法
3万
查看次数

使用带有swagger ui的@RequestParam注释方法

我正在使用Springfox库来生成REST服务的文档,并在Swagger UI中显示它.我按照Springfox文档中的说明进行操作.

我有一个控制器,它使用查询字符串中的参数,方法映射如下:

@ApiOperation(value = "")
@RequestMapping(method = GET, value = "/customcollection/{id}/data")
public Iterable<CustomeType> getData(@ApiParam(value = "The identifier of the time series.") 
    @PathVariable String id,
    @ApiParam(name = "startDate", value = "start date", defaultValue = "")
    @RequestParam("startDate") String startDate,
    @ApiParam(name = "endDate", value = "end date", defaultValue = "")
    @RequestParam("endDate") String endDate)
Run Code Online (Sandbox Code Playgroud)

swagger-ui中生成的映射器显示为:

GET /customcollection/{id}/data{?startDate,endDate}
Run Code Online (Sandbox Code Playgroud)

参数在UI中正确显示: 在此输入图像描述

但是当我点击Try it Out时,请求URL会被误认为:

http:// localhost:8080/customcollection/1/data {?startDate,endDate}?startDate = 1&endDate = 2

怎么修好?

swagger-ui spring-boot swagger-2.0 springfox

24
推荐指数
1
解决办法
2万
查看次数