SpringBoot3WebFlux整合springdoc

601 阅读1分钟

目前公司全面升级SpringBoot3和JDK17,自己私下写个Demo,看看有啥新特性。集成swagger时遇到个问题,在此做下记录。

工程依赖:

<properties>
    <java.version>17</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <spring-boot.version>3.2.2</spring-boot.version>
</properties>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

从依赖可以看出,本工程是依赖了webflux,关于webflux的内容,可以直接网上搜。这里只需要知道spring-boot-starter-webfluxspring-boot-starter-web 存在区别。

  • spring-boot-starter-web

    • 底层基于 Servlet API,主要用于构建传统的基于 Servlet 的 Web 应用程序。
    • 默认情况下,它包含了 Tomcat 作为内置的 Servlet 容器,但也可以配置为使用 Jetty 或 Undertow。
    • 它支持同步和阻塞的编程模型。
  • spring-boot-starter-webflux

    • 底层基于 Reactor Netty 或其他非阻塞服务器(如 Tomcat 的异步模式),主要用于构建响应式 Web 应用程序。
    • 它提供了对响应式编程模型的支持,允许以异步和非阻塞的方式处理请求和响应。

这里说一下我遇到的问题,我在集成swagger时,网上搜了资料,提示需要集成springdoc的依赖。我直接一个复制粘贴,然后启动程序,访问swagger-ui地址,结果页面出来个404。

image.png

这里跳过网上搜资料、各种试错的过程,最后发现因为我程序中最开始引入的是webflux依赖,而swagger对于支持webflux是不同的依赖,参考官网说明

image.png

区别在于一个是支持webMvc,而这是支持webFlux。 image.png

更新springdoc依赖后,重启程序,访问swagger-ui地址,ok有了! image.png

另外附上OpenAi的官网地址