无法在春季数据休息中启动 bean 'documentationPluginsBootstrapper'

Gal*_*let 4 java spring spring-mvc spring-data springfox

我正在为我的应用程序使用 spring 数据休息。

当我在存储库中添加此方法时,出现以下错误并且应用程序无法启动:-

方法:-

@Modifying
@Transactional
@Query("from employee as ft where ft.company.id = ?1")
void deleteAllEmployeeCompany(
        @Param("companyId") @RequestParam("companyId") int companyId);
Run Code Online (Sandbox Code Playgroud)

错误:-

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:874) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) ~[spring-boot-1.4.1.RELEASE.jar!/:1.4.1.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544) ~[spring-context-4.3.3.RELEASE.jar!/:4.3.3.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar!/:1.4.1.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar!/:1.4.1.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar!/:1.4.1.RELEASE]
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

更新:-

所有依赖项的列表:-

[INFO] com.test:test-service:jar:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:1.4.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:1.4.1.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:1.4.1.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.1.RELEASE:compile
[INFO] |  |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.4.1.RELEASE:compile
[INFO] |  |     +- ch.qos.logback:logback-classic:jar:1.1.7:compile
[INFO] |  |     |  \- ch.qos.logback:logback-core:jar:1.1.7:compile
[INFO] |  |     +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile
[INFO] |  |     \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile
[INFO] |  \- org.springframework.boot:spring-boot-actuator:jar:1.4.1.RELEASE:compile
[INFO] |     \- org.springframework:spring-context:jar:4.3.3.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.4.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-aop:jar:1.4.1.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-aop:jar:4.3.3.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.4.1.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat:tomcat-jdbc:jar:8.5.5:compile
[INFO] |  |  |  \- org.apache.tomcat:tomcat-juli:jar:8.5.5:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:4.3.3.RELEASE:compile
[INFO] |  +- org.hibernate:hibernate-core:jar:5.0.11.Final:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  |  +- org.jboss:jandex:jar:2.0.0.Final:compile
[INFO] |  |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  |  \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] |  |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] |  +- org.hibernate:hibernate-entitymanager:jar:5.0.11.Final:compile
[INFO] |  +- javax.transaction:javax.transaction-api:jar:1.2:compile
[INFO] |  +- org.springframework.data:spring-data-jpa:jar:1.10.3.RELEASE:compile
[INFO] |  |  +- org.springframework.data:spring-data-commons:jar:1.12.3.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-orm:jar:4.3.3.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-tx:jar:4.3.3.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-beans:jar:4.3.3.RELEASE:compile
[INFO] |  |  \- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile
[INFO] |  \- org.springframework:spring-aspects:jar:4.3.3.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-data-rest:jar:1.4.1.RELEASE:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.3:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.3:compile
[INFO] |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.8.3:compile
[INFO] |  \- org.springframework.data:spring-data-rest-webmvc:jar:2.5.3.RELEASE:compile
[INFO] |     \- org.springframework.data:spring-data-rest-core:jar:2.5.3.RELEASE:compile
[INFO] |        \- org.atteo:evo-inflector:jar:1.2.1:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.4.1.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.4.1.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.5:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.5:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.5:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile
[INFO] |  |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  +- org.springframework:spring-web:jar:4.3.3.RELEASE:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:4.3.3.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:4.3.3.RELEASE:compile
[INFO] +- org.springframework.cloud:spring-cloud-starter-eureka:jar:1.1.0.RELEASE:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-starter:jar:1.1.0.RELEASE:compile
[INFO] |  |  +- org.springframework.cloud:spring-cloud-context:jar:1.1.0.RELEASE:compile
[INFO] |  |  |  \- org.springframework.security:spring-security-crypto:jar:4.1.3.RELEASE:compile
[INFO] |  |  +- org.springframework.cloud:spring-cloud-commons:jar:1.1.0.RELEASE:compile
[INFO] |  |  \- org.springframework.security:spring-security-rsa:jar:1.0.1.RELEASE:compile
[INFO] |  |     \- org.bouncycastle:bcpkix-jdk15on:jar:1.47:compile
[INFO] |  |        \- org.bouncycastle:bcprov-jdk15on:jar:1.47:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-netflix-core:jar:1.1.0.RELEASE:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-netflix-eureka-client:jar:1.1.0.RELEASE:compile
[INFO] |  +- com.netflix.eureka:eureka-client:jar:1.4.6:compile
[INFO] |  |  +- org.codehaus.jettison:jettison:jar:1.3.7:runtime
[INFO] |  |  |  \- stax:stax-api:jar:1.0.1:runtime
[INFO] |  |  +- com.netflix.netflix-commons:netflix-eventbus:jar:0.3.0:runtime
[INFO] |  |  +- com.netflix.archaius:archaius-core:jar:0.7.4:compile
[INFO] |  |  +- javax.ws.rs:jsr311-api:jar:1.1.1:runtime
[INFO] |  |  +- com.netflix.servo:servo-core:jar:0.10.1:runtime
[INFO] |  |  |  \- com.netflix.servo:servo-internal:jar:0.10.1:runtime
[INFO] |  |  +- com.sun.jersey:jersey-core:jar:1.19.1:runtime
[INFO] |  |  +- com.sun.jersey:jersey-client:jar:1.19.1:runtime
[INFO] |  |  +- com.sun.jersey.contribs:jersey-apache-client4:jar:1.19.1:runtime
[INFO] |  |  +- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
[INFO] |  |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.5:compile
[INFO] |  |  |  \- commons-codec:commons-codec:jar:1.10:compile
[INFO] |  |  +- com.google.inject:guice:jar:4.0:runtime
[INFO] |  |  |  +- javax.inject:javax.inject:jar:1:runtime
[INFO] |  |  |  \- aopalliance:aopalliance:jar:1.0:runtime
[INFO] |  |  \- com.netflix.governator:governator-api:jar:1.12.10:runtime
[INFO] |  +- com.netflix.eureka:eureka-core:jar:1.4.6:compile
[INFO] |  |  +- com.amazonaws:aws-java-sdk-core:jar:1.10.30:runtime
[INFO] |  |  +- com.amazonaws:aws-java-sdk-ec2:jar:1.10.30:runtime
[INFO] |  |  +- com.amazonaws:aws-java-sdk-autoscaling:jar:1.9.3:runtime
[INFO] |  |  +- com.amazonaws:aws-java-sdk-sts:jar:1.9.3:runtime
[INFO] |  |  +- com.amazonaws:aws-java-sdk-route53:jar:1.9.3:runtime
[INFO] |  |  +- com.netflix.governator:governator:jar:1.12.10:runtime
[INFO] |  |  |  +- com.netflix.governator:governator-core:jar:1.12.10:runtime
[INFO] |  |  |  \- org.ow2.asm:asm:jar:5.0.4:compile
[INFO] |  |  \- org.codehaus.woodstox:woodstox-core-asl:jar:4.4.1:runtime
[INFO] |  |     +- javax.xml.stream:stax-api:jar:1.0-2:runtime
[INFO] |  |     \- org.codehaus.woodstox:stax2-api:jar:3.1.4:runtime
[INFO] |  +- org.springframework.cloud:spring-cloud-starter-archaius:jar:1.1.0.RELEASE:compile
[INFO] |  |  \- commons-configuration:commons-configuration:jar:1.8:compile
[INFO] |  |     +- commons-lang:commons-lang:jar:2.6:compile
[INFO] |  |     \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-starter-ribbon:jar:1.1.0.RELEASE:compile
[INFO] |  |  +- com.netflix.ribbon:ribbon:jar:2.1.5:compile
[INFO] |  |  |  +- com.netflix.ribbon:ribbon-transport:jar:2.1.5:runtime
[INFO] |  |  |  |  +- io.reactivex:rxnetty-contexts:jar:0.4.9:runtime
[INFO] |  |  |  |  \- io.reactivex:rxnetty-servo:jar:0.4.9:runtime
[INFO] |  |  |  \- io.reactivex:rxnetty:jar:0.4.9:runtime
[INFO] |  |  |     +- io.netty:netty-codec-http:jar:4.0.27.Final:runtime
[INFO] |  |  |     |  +- io.netty:netty-codec:jar:4.0.27.Final:runtime
[INFO] |  |  |     |  \- io.netty:netty-handler:jar:4.0.27.Final:runtime
[INFO] |  |  |     \- io.netty:netty-transport-native-epoll:jar:4.0.27.Final:runtime
[INFO] |  |  |        +- io.netty:netty-common:jar:4.0.27.Final:runtime
[INFO] |  |  |        +- io.netty:netty-buffer:jar:4.0.27.Final:runtime
[INFO] |  |  |        \- io.netty:netty-transport:jar:4.0.27.Final:runtime
[INFO] |  |  +- com.netflix.ribbon:ribbon-core:jar:2.1.5:compile
[INFO] |  |  +- com.netflix.ribbon:ribbon-httpclient:jar:2.1.5:compile
[INFO] |  |  |  \- com.netflix.netflix-commons:netflix-commons-util:jar:0.1.1:runtime
[INFO] |  |  +- com.netflix.ribbon:ribbon-loadbalancer:jar:2.1.5:compile
[INFO] |  |  |  \- com.netflix.netflix-commons:netflix-statistics:jar:0.1.1:runtime
[INFO] |  |  \- io.reactivex:rxjava:jar:1.1.5:compile
[INFO] |  +- com.netflix.ribbon:ribbon-eureka:jar:2.1.5:compile
[INFO] |  \- com.thoughtworks.xstream:xstream:jar:1.4.2:compile
[INFO] |     +- xmlpull:xmlpull:jar:1.1.3.1:compile
[INFO] |     \- xpp3:xpp3_min:jar:1.1.4c:compile
[INFO] +- org.springframework.boot:spring-boot-starter-amqp:jar:1.4.1.RELEASE:compile
[INFO] |  +- org.springframework:spring-messaging:jar:4.3.3.RELEASE:compile
[INFO] |  \- org.springframework.amqp:spring-rabbit:jar:1.6.2.RELEASE:compile
[INFO] |     +- com.rabbitmq:amqp-client:jar:3.6.3:compile
[INFO] |     +- org.springframework.retry:spring-retry:jar:1.1.4.RELEASE:compile
[INFO] |     +- com.rabbitmq:http-client:jar:1.0.0.RELEASE:compile
[INFO] |     \- org.springframework.amqp:spring-amqp:jar:1.6.2.RELEASE:compile
[INFO] +- com.netflix.hystrix:hystrix-javanica:jar:1.3.16:compile
[INFO] |  +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] |  +- org.aspectj:aspectjweaver:jar:1.8.9:compile
[INFO] |  +- com.google.guava:guava:jar:18.0:compile
[INFO] |  +- com.netflix.hystrix:hystrix-core:jar:1.5.2:compile
[INFO] |  |  \- org.hdrhistogram:HdrHistogram:jar:2.1.7:compile
[INFO] |  \- org.apache.commons:commons-lang3:jar:3.1:compile
[INFO] +- com.netflix.hystrix:hystrix-metrics-event-stream:jar:1.3.16:compile
[INFO] |  \- org.codehaus.jackson:jackson-core-asl:jar:1.9.2:compile
[INFO] +- io.springfox:springfox-swagger2:jar:2.6.0:compile
[INFO] |  +- io.swagger:swagger-annotations:jar:1.5.10:compile
[INFO] |  +- io.swagger:swagger-models:jar:1.5.10:compile
[INFO] |  +- io.springfox:springfox-spi:jar:2.6.0:compile
[INFO] |  |  \- io.springfox:springfox-core:jar:2.6.0:compile
[INFO] |  +- io.springfox:springfox-schema:jar:2.6.0:compile
[INFO] |  +- io.springfox:springfox-swagger-common:jar:2.6.0:compile
[INFO] |  +- io.springfox:springfox-spring-web:jar:2.6.0:compile
[INFO] |  +- com.fasterxml:classmate:jar:1.3.1:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO] |  +- org.springframework.plugin:spring-plugin-core:jar:1.2.0.RELEASE:compile
[INFO] |  +- org.springframework.plugin:spring-plugin-metadata:jar:1.2.0.RELEASE:compile
[INFO] |  \- org.mapstruct:mapstruct:jar:1.0.0.Final:compile
[INFO] +- io.springfox:springfox-swagger-ui:jar:2.6.0:compile
[INFO] +- io.springfox:springfox-data-rest:jar:2.6.0:compile
[INFO] |  \- org.springframework.hateoas:spring-hateoas:jar:0.20.0.RELEASE:compile
[INFO] +- org.liquibase:liquibase-core:jar:3.5.1:compile
[INFO] |  \- org.yaml:snakeyaml:jar:1.17:compile
[INFO] +- mysql:mysql-connector-java:jar:5.1.34:runtime
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.4.1.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:1.4.1.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.4.1.RELEASE:test
[INFO] |  +- junit:junit:jar:4.12:test
[INFO] |  +- org.assertj:assertj-core:jar:2.5.0:test
[INFO] |  +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] |  |  \- org.objenesis:objenesis:jar:2.1:test
[INFO] |  +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] |  +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.3.0:test
[INFO] |  |  \- org.json:json:jar:20140107:test
[INFO] |  +- org.springframework:spring-core:jar:4.3.3.RELEASE:compile
[INFO] |  \- org.springframework:spring-test:jar:4.3.3.RELEASE:test
[INFO] +- com.jayway.jsonpath:json-path:jar:2.2.0:compile
[INFO] |  \- net.minidev:json-smart:jar:2.2.1:compile
[INFO] |     \- net.minidev:accessors-smart:jar:1.1:compile
[INFO] \- org.reflections:reflections:jar:0.9.10:compile
[INFO]    +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO]    \- com.google.code.findbugs:annotations:jar:2.0.1:compile
Run Code Online (Sandbox Code Playgroud)

San*_*nth 228

我使用 springfox-swagger2 和 springfox-swagger-ui 版本(3.0.0)、spring-boot 版本(2.6.2)遇到了同样的问题

解决这个问题的方法是在应用程序中添加pathmatcher。属性或 application.yml

对于应用程序属性:

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

对于 application.yml:

spring:
    mvc:
      pathmatch:
            matching-strategy: ant_path_matcher
Run Code Online (Sandbox Code Playgroud)

  • 这是做什么的? (22认同)
  • @CoderCal这个解决方案对我有用:https://github.com/springfox/springfox/issues/3462#issuecomment-1010721223 (13认同)
  • 由于某种原因,在 springfox-swagger-ui 版本(3.0.0)和 spring-boot 版本(2.6.2)上对我不起作用。转到 spring-boot 版本(2.5.8)并在我的 application.properties 中没有 `spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER` 的情况下解决了问题 (10认同)
  • 有这方面的文档吗? (6认同)
  • 如果您使用弹簧致动器,这将不起作用 (3认同)

Mic*_*mal 69

此问题是由于Spring MVCSpring Fox 3.0.0不支持新的基于 PathPattern 的路径匹配策略引起的,该策略现在是.spring-boot 2.6.0

实际上有一些解决此问题的方法,例如:

  1. 降级spring-boot回低于 2.6.0 的版本。我不建议这样做,因为旧版本的 spring boot / spring 框架存在重大安全问题(例如 log4shell 或 CVE-2022-22965)。
  2. 将 PathPattern 匹配更改回 yml 中的 AntPatternMatching,如@santhanam提到的。
  3. SpringFox已经有一年左右没有更新了,所以我更愿意从项目中完全删除它,并用维护的springdoc-openapi库替换它。文档中有一个springdoc关于迁移的部分SpringFox,实际上执行起来非常简单。并且您将完全摆脱 SpringFox 引起的问题。

  • IMO 建议 3 应该是可接受的答案。依赖一个近两年都没有受到关注的项目并不是明智之举。截至目前,自 2020 年 10 月以来,SpringFox 尚未做出任何提交。 (6认同)
  • #3 是最好的解决方案,我可以确认迁移确实是直接的 (2认同)
  • 每当我读到“降级”时,我的胃就会翻腾。 (2认同)

moh*_*ian 29

我发现 spring 默认使用 mvcmatchers 这与 swagger 冲突,因为它使用 antmatchers 所以我们可以通过以下方式解决这个问题

A

更改 spring 以使用 antmatchers 并在 application.properties 中进行配置

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
Run Code Online (Sandbox Code Playgroud)

在 spring 中启用 mvcmatchers 创建一个配置文件供 swagger 使用

  1. 在您想要的任何地方创建一个用于 swagger 配置的文件
  2. 把这些注释
@EnableWebMvc
@EnableSwagger2
@Component
public class SwaggersConfigs {
}
Run Code Online (Sandbox Code Playgroud)

C

在所有 Spring 应用程序中启用 mvcmatchers,将 @EnableWebMvc 注释放在 Spring Boot 应用程序的主类之上,如下所示


@EnableWebMvc
@EnableSwagger2
@SpringBootApplication
public class SwaggerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SwaggerDemoApplication.class, args);
    }

}
Run Code Online (Sandbox Code Playgroud)

D

使用其他评论中提到的旧版本


Aff*_*lem 24

我使用springfox-swagger2springfox-swagger-ui遇到了同样的问题 将 Spring Boot 版本从2.6.0 切换到2.5.2解决了我的问题。

我知道回滚到旧版本并不是解决问题的最佳方法,但目前对我有帮助。

  • 是的,就是这样。我在使用 open-api-generator 集成时发生了这种情况,该集成使用 springfox 进行实现。我什至尝试使用 spring boot 版本 2.6.2 将 springfox-swagger2 和 springfox-swagger-ui 更新到最新版本 3.0.x。没有运气。不得不回滚到Spring boot 2.5.4和2.9.2版本的springfox。希望他们将来能解决这个问题 (2认同)
  • spring boot 2.6.2 包含推荐的 log4j 2.17,所以这确实需要修复 (2认同)

Kon*_*oah 12

这有效 Springboot 版本 2.6.0 及更高版本不支持 swagger 2 删除 springfox 和 swagger 2 依赖项。添加 springdoc-openapi-ui 依赖项。

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.6</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

将其添加到您的 application.properties 文件中

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER

之后导航到 http://localhost:8080/swagger-ui/index.html

这对我有用


小智 11

错误原因是 swagger 和 spring-boot 版本不匹配

删除所有其他依赖项,并仅包含以下一个用于 swagger

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-boot-starter</artifactId>
   <version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

添加以下配置:

对于应用程序属性

spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER
Run Code Online (Sandbox Code Playgroud)

对于应用程序.yml

spring:
    mvc:
      pathmatch:
            matching-strategy: ant_path_matcher
Run Code Online (Sandbox Code Playgroud)


小智 10

此解决方案解决了该问题以及以下属性

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

我正在使用 Spring Boot 2.6.6


Vla*_*lad 8

除了设置matching-strategy属性之外,正如其他答案所提到的,我还必须添加以下 bean 来克服这个问题:

@Bean
public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties, Environment environment) {
    List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
    Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
    allEndpoints.addAll(webEndpoints);
    allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
    allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
    String basePath = webEndpointProperties.getBasePath();
    EndpointMapping endpointMapping = new EndpointMapping(basePath);
    boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
    return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
}


private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
    return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
}
Run Code Online (Sandbox Code Playgroud)

解决方案在这里找到。


Kai*_*010 7

对于Spring-Boot 2.6.0和SpringFox 3.0.0,问题是pathmatcher,您可以使用以下属性设置pathmach,此问题将得到解决

  spring:
        mvc:
          pathmatch:
                matching-strategy: ant_path_matcher
Run Code Online (Sandbox Code Playgroud)


Faz*_*oon 7

只需将此配置添加到您的 application.properties

\n
spring.mvc.pathmatch.matching-strategy = ANT_PATH_MATCHER\n
Run Code Online (Sandbox Code Playgroud)\n

或者如果您使用 yaml 文件 application.yml

\n
spring:\nmvc:\n  pathmatch:\n        matching-strategy: ant_path_matcher\n
Run Code Online (Sandbox Code Playgroud)\n

然后运行您的应用程序。

\n

您需要编辑一部分,即基础包名称。如屏幕截图所示,我的基础包名称。\n我的包名称

\n
@Configuration\n@EnableSwagger2\npublic class SwaggerConfig2 {\n    @Bean\n    public Docket docket() {\n        return new Docket(DocumentationType.SWAGGER_2)\n                .enable(true)\n                .apiInfo(new ApiInfoBuilder()\n                        .title("Swagger Super")\n                        .description("Swagger Description details")\n                        .version("1.0").build())\n                .select()\n                .apis(RequestHandlerSelectors.basePackage("com.example.swagger.controller"))\n                .paths(PathSelectors.any()).build();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
@Configuration\n@EnableSwagger2\npublic class SwaggerConfig2 {\n    @Bean\n    public Docket docket() {\n        return new Docket(DocumentationType.SWAGGER_2)\n                .enable(true)\n                .apiInfo(new ApiInfoBuilder()\n                        .title("Swagger Super")\n                        .description("Swagger Description details")\n                        .version("1.0").build())\n                .select()\n                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))\n                .paths(PathSelectors.any()).build();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

以及 Swagger 依赖项

\n
         <dependency>\n            <groupId>io.springfox</groupId>\n            <artifactId>springfox-swagger2</artifactId>\n            <version>2.6.1</version>\n            <scope>compile</scope>\n        </dependency>\n        <dependency>\n            <groupId>io.springfox</groupId>\n            <artifactId>springfox-swagger-ui</artifactId>\n            <version>2.6.1</version>\n            <scope>compile</scope>\n        </dependency>\n
Run Code Online (Sandbox Code Playgroud)\n

工作正常

\n

另外,您还可以单独定义

\n
@Configuration\n@EnableSwagger2\npublic class Swagger2UiConfiguration {\n    @Bean\n    public Docket api() {\n        return (new Docket(DocumentationType.SWAGGER_2)).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();\n    }\n\n    private ApiInfo apiInfo() {\n        return (new ApiInfoBuilder()).title("Swagger API").version("1.0").description("Swagger is Awesome").build();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

注意: SNAPSHOT、M1、M2、M3 和 M4 版本通常正在进行中。Spring 团队仍在研究它们,建议不要使用它们。

\n

注意:如果想为新版本spring-boot 3实现 springdoc-openAPI ,请使用以下依赖项。该特定版本将与Spring Boot 3一起使用

\n
        <dependency>\n            <groupId>org.springdoc</groupId>\n            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>\n            <version>2.0.2</version>\n        </dependency>\n
Run Code Online (Sandbox Code Playgroud)\n

我希望这有帮助!如果您有任何疑问或者还有什么我可以帮助您的,请告诉我。

\n

快乐编码!\xe2\x80\x8d

\n


gvk*_*gvk 5

我在 spring boot 版本 1.5.3.RELEASE 中遇到了同样的问题,但可以通过添加 guava 版本 20.0 来解决它。

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>20.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


小智 5

删除旧的 swagger 依赖项和配置类。使用新的 springdoc 依赖项会有所帮助

    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.4</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


Iss*_*TIF 0

将您的查询更改为

@Modifying
@Transactional
@Query("from employee as ft where ft.company.id = :companyId")
void deleteAllEmployeeCompany(
        @Param("companyId") @RequestParam("companyId") int companyId);
Run Code Online (Sandbox Code Playgroud)

或者使用 SpEL

@Modifying
@Transactional
@Query("from employee as ft where ft.company.id = ?#{companyId}")
void deleteAllEmployeeCompany(
        @Param("companyId") @RequestParam("companyId") int companyId);
Run Code Online (Sandbox Code Playgroud)

检查此https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions