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;
|
}
|
}
|