♻️ Refactoring code. 兼容单体版本 supoort knife4j doc

This commit is contained in:
lbw committed 2023-01-04 11:55:49 +08:00
1 parent 6d4a3bed38
commit ee117107a0
3 files changed
+41 -6

No files matched your search

@@ -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<Server> 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
@@ -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());
}
}
}
@@ -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;
}
}