diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinition.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinition.java index 8d12971e0..90b44ef6d 100644 --- a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinition.java +++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinition.java @@ -29,7 +29,6 @@ import lombok.Setter; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.cloud.client.ServiceInstance; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.http.HttpHeaders; @@ -81,11 +80,6 @@ public class OpenAPIDefinition extends OpenAPI implements InitializingBean, Appl List serverList = new ArrayList<>(); serverList.add(new Server().url(swaggerProperties.getGateway() + "/" + path)); this.servers(serverList); - - // 修改 ServiceInstance Metadata - ServiceInstance serviceInstance = applicationContext.getBean(ServiceInstance.class); - serviceInstance.getMetadata().put("spring-doc", path); - } @Override diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinitionImportSelector.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinitionImportSelector.java index 01b97f1aa..1bade57cf 100644 --- a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinitionImportSelector.java +++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIDefinitionImportSelector.java @@ -31,6 +31,15 @@ public class OpenAPIDefinitionImportSelector implements ImportBeanDefinitionRegi definition.addPropertyValue("path", value); registry.registerBeanDefinition("openAPIDefinition", definition.getBeanDefinition()); + + // 如果是微服务架构则,引入了服务发现声明相关的元数据配置 + boolean isMicro = registry.containsBeanDefinition("serviceInstance"); + if (isMicro) { + BeanDefinitionBuilder openAPIMetadata = BeanDefinitionBuilder + .genericBeanDefinition(OpenAPIMetadataConfiguration.class); + openAPIMetadata.addPropertyValue("path", value); + registry.registerBeanDefinition("openAPIMetadata", openAPIMetadata.getBeanDefinition()); + } } } diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIMetadataConfiguration.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIMetadataConfiguration.java new file mode 100644 index 000000000..a73e2815b --- /dev/null +++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIMetadataConfiguration.java @@ -0,0 +1,32 @@ +package com.pig4cloud.pigx.common.swagger.config; + +import lombok.Setter; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +/** + * @author lengleng + * @date 2023/1/4 + */ +public class OpenAPIMetadataConfiguration implements InitializingBean, ApplicationContextAware { + + private ApplicationContext applicationContext; + + @Setter + private String path; + + @Override + public void afterPropertiesSet() throws Exception { + ServiceInstance serviceInstance = applicationContext.getBean(ServiceInstance.class); + serviceInstance.getMetadata().put("spring-doc", path); + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + +}