package com.ruoyi.framework.config; import com.ruoyi.framework.config.properties.SwaggerProperties; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import lombok.RequiredArgsConstructor; import org.springdoc.core.SpringDocConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Swagger 文档配置 * * @author Lion Li */ @RequiredArgsConstructor @Configuration @AutoConfigureBefore(SpringDocConfiguration.class) @ConditionalOnProperty(name = "swagger.enabled", havingValue = "true", matchIfMissing = true) public class SwaggerConfig { private final SwaggerProperties swaggerProperties; @Bean @ConditionalOnMissingBean(OpenAPI.class) public OpenAPI openApi() { OpenAPI openApi = new OpenAPI(); // 文档基本信息 SwaggerProperties.InfoProperties infoProperties = swaggerProperties.getInfo(); Info info = convertInfo(infoProperties); openApi.info(info); // 扩展文档信息 openApi.externalDocs(swaggerProperties.getExternalDocs()); openApi.tags(swaggerProperties.getTags()); openApi.paths(swaggerProperties.getPaths()); openApi.components(swaggerProperties.getComponents()); return openApi; } private Info convertInfo(SwaggerProperties.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; } }