From ee117107a0098b445fba6fe1acde43dbac446a38 Mon Sep 17 00:00:00 2001 From: lbw Date: Wed, 4 Jan 2023 11:55:49 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20Refactoring=20code.=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E5=8D=95=E4=BD=93=E7=89=88=E6=9C=AC=20supoort=20knife?= =?UTF-8?q?4j=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../swagger/config/OpenAPIDefinition.java | 6 ---- .../OpenAPIDefinitionImportSelector.java | 9 ++++++ .../config/OpenAPIMetadataConfiguration.java | 32 +++++++++++++++++++ 3 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/OpenAPIMetadataConfiguration.java 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; + } + +}