注意
springboot3.4.X不能直接整合swagger,而是通过SpringDoc进行整合
步骤
1.在pom文件中引入依赖
<!-- api文档生成-->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.6</version> <!-- 或更高版本 -->
</dependency>
<!-- Knife4j 按需添加 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version> <!-- 确保兼容 Spring Boot 3.x -->
</dependency>
2.在application.yml中进行配置
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: 'default'
paths-to-match: '/**' #默认扫描全部的接口
packages-to-scan: com.xxx.xxx.controller #不加会默认扫描全部的包
3.添加SwaggerConfig类
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI swaggerOpenAPI(){
return new OpenAPI()
.info(new Info().title("标题")
.contact(new Contact())
.description("详细介绍")
.version("版本v.1")
.license(new License().name("Apache 2.0").url("https://xxxx.xxx.xxx")))
.externalDocs(new ExternalDocumentation()
.description("外部文档")
.url("https://xxxx.xxx.xxx"));
}
}
4.如果配置了全局异常处理,需要加@Hidden注解
5.如果使用了Spring Security可能会导致资源拦截
修改配置
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
.anyRequest().authenticated()
);
return http.build();
}
5.访问
访问swagger ui:http://localhost:8080/swagger-ui/index.html
访问Knife4J:http://localhost:8080/doc.html