目前公司全面升级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-webflux和spring-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。
这里跳过网上搜资料、各种试错的过程,最后发现因为我程序中最开始引入的是webflux依赖,而swagger对于支持webflux是不同的依赖,参考官网说明。
区别在于一个是支持webMvc,而这是支持webFlux。
更新springdoc依赖后,重启程序,访问swagger-ui地址,ok有了!
另外附上OpenAi的官网地址