package com.aps.common.swagger.config; import java.util.ArrayList; import java.util.List; import org.springdoc.core.configuration.SpringDocConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import com.aps.common.swagger.config.properties.SpringDocProperties; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.security.SecurityRequirement; import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.servers.Server; /** * Swagger 文档配置 * * @author ruoyi */ @AutoConfiguration(before = SpringDocConfiguration.class) @EnableConfigurationProperties(SpringDocProperties.class) @ConditionalOnProperty(name = "springdoc.api-docs.enabled", havingValue = "true", matchIfMissing = true) public class SpringDocAutoConfiguration { @Bean @ConditionalOnMissingBean(OpenAPI.class) public OpenAPI openApi(SpringDocProperties properties) { return new OpenAPI().components(new Components() // 设置认证的请求头 .addSecuritySchemes("apikey", securityScheme())) .addSecurityItem(new SecurityRequirement().addList("apikey")) .info(convertInfo(properties.getInfo())) .servers(servers(properties.getGatewayUrl())); } public SecurityScheme securityScheme() { return new SecurityScheme().type(SecurityScheme.Type.APIKEY) .name("Authorization") .in(SecurityScheme.In.HEADER) .scheme("Bearer"); } private Info convertInfo(SpringDocProperties.InfoProperties infoProperties) { Info info = new Info(); info.setTitle(infoProperties.getTitle()); info.setDescription(infoProperties.getDescription()); info.setContact(infoProperties.getContact()); info.setLicense(infoProperties.getLicense()); info.setVersion(infoProperties.getVersion()); return info; } public List servers(String gatewayUrl) { List serverList = new ArrayList<>(); serverList.add(new Server().url(gatewayUrl)); return serverList; } }