OpenAPI3&Spring Boot 自定义配置
@
DocProperties
@Data
@ConfigurationProperties("doc.info")
public class DocProperties {
/**
* 分组名称
*/
private String group = "default";
/**
* 标题
*/
private String title = "API";
/**
* 描述
*/
private String description = "RESTFUL API";
/**
* 版
*/
private String version = "v2.0.0";
/**
* 接口调用地址
*/
private String serverUrl;
/**
* 执照
*/
private String license = "Apache 2.0";
/**
* 执照地址
*/
private String licenseUrl = "https://www.apache.org/licenses/LICENSE-2.0.html";
/**
* 全局安全配置
*/
private List<SecurityScheme> securitySchemes = Lists.newArrayList();}
DocConfiguration
- Doc 基础信息配置
- 认证配置
- 全局变量配置
@Slf4j
@AllArgsConstructor
@EnableConfigurationProperties(DocProperties.class)
public class DocConfiguration {
private final DocProperties docProperties;
/**
* Api docket.
*
* @return the docket
*/
@Bean
public GroupedOpenApi api() {
return GroupedOpenApi.builder()
.group(docProperties.getGroup())
.pathsToMatch("/**")
.build();
}
/**
* Open api open api.
*
* @return the open api
*/
@Bean
public OpenAPI openApi() {
Components components = this.components();
return new OpenAPI()
.info(new Info()
.title(docProperties.getTitle())
.description(docProperties.getDescription())
.version(docProperties.getVersion())
.license(new License().name(docProperties.getLicense()).url(docProperties.getLicenseUrl())))
.components(components)
// 配置接口访问地址
.servers(Collections.singletonList(new Server().url(docProperties.getServerUrl())))
// 配置认证
.security(this.security(components));
}
private Components components() {
Components components = new Components()
.addSecuritySchemes("Bearer Authorization", new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer").bearerFormat("JWT"))
.addSecuritySchemes("Basic Authorization", new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("basic"));
docProperties.getSecuritySchemes().forEach(components::addSecuritySchemes);
return components;
}
private List<SecurityRequirement> security(Components components) {
return components.getSecuritySchemes().keySet()
.stream()
.map(key -> new SecurityRequirement().addList(key))
.collect(Collectors.toList());
}
pom.xml
<properties>
<springdoc.version>1.6.8</springdoc.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<!-- SpringDoc -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
</dependencies>
application.yaml
doc:
info:
title: '系统管理服务'
description: '系统管理服务 RESTFUL API'
server-url: ${DOC_SERVER_URL:http://127.0.0.1:${server.port}}
security-schemes:
- in: header
type: apikey
name: 'realm'

浙公网安备 33010602011771号