mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-15 06:29:01 +08:00
♻️ 重构单体版本,支持一套代码支持两种登录模式
This commit is contained in:
1 parent
4bd449c53b
commit
078adf7d67
78 files changed
+1497
-1132
No files matched your search
+19
-15
@@ -17,7 +17,6 @@
|
||||
|
||||
package org.springframework.cloud.openfeign;
|
||||
|
||||
import com.pig4cloud.pigx.common.feign.PigxFeignAutoConfiguration;
|
||||
import lombok.Getter;
|
||||
import org.springframework.beans.factory.BeanClassLoaderAware;
|
||||
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
||||
@@ -34,7 +33,6 @@ import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.io.support.SpringFactoriesLoader;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -47,8 +45,7 @@ import java.util.Map;
|
||||
* <p>
|
||||
* feign 自动配置功能 from mica
|
||||
*/
|
||||
public class PigxFeignClientsRegistrar
|
||||
implements ImportBeanDefinitionRegistrar, BeanClassLoaderAware, EnvironmentAware {
|
||||
public class PigxFeignClientsRegistrar implements ImportBeanDefinitionRegistrar, BeanClassLoaderAware, EnvironmentAware {
|
||||
|
||||
private final static String BASE_URL = "http://127.0.0.1:${server.port}${server.servlet.context-path}";
|
||||
|
||||
@@ -69,11 +66,12 @@ public class PigxFeignClientsRegistrar
|
||||
}
|
||||
|
||||
private void registerFeignClients(BeanDefinitionRegistry registry) {
|
||||
List<String> feignClients = new ArrayList<>();
|
||||
|
||||
List<String> feignClients = new ArrayList<>(
|
||||
SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()));
|
||||
|
||||
// 支持 springboot 2.7 + 最新版本的配置方式
|
||||
ImportCandidates.load(FeignClient.class, getBeanClassLoader()).forEach(feignClients::add);
|
||||
|
||||
// 如果 spring.factories 里为空
|
||||
if (feignClients.isEmpty()) {
|
||||
return;
|
||||
@@ -86,16 +84,20 @@ public class PigxFeignClientsRegistrar
|
||||
if (attributes == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 如果是单体项目自动注入 & url 为空
|
||||
Boolean isMicro = environment.getProperty("spring.cloud.nacos.discovery.enabled", Boolean.class, true);
|
||||
// 如果已经存在该 bean,支持原生的 Feign
|
||||
if (registry.containsBeanDefinition(className)) {
|
||||
if (registry.containsBeanDefinition(className) && isMicro) {
|
||||
continue;
|
||||
}
|
||||
|
||||
registerClientConfiguration(registry, getClientName(attributes), attributes.get("configuration"));
|
||||
|
||||
validate(attributes);
|
||||
BeanDefinitionBuilder definition = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(FeignClientFactoryBean.class);
|
||||
definition.addPropertyValue("url", getUrl(attributes));
|
||||
definition.addPropertyValue("url", getUrl(registry, attributes));
|
||||
definition.addPropertyValue("path", getPath(attributes));
|
||||
String name = getName(attributes);
|
||||
definition.addPropertyValue("name", name);
|
||||
@@ -149,7 +151,7 @@ public class PigxFeignClientsRegistrar
|
||||
* @return the factory class
|
||||
*/
|
||||
private Class<?> getSpringFactoriesLoaderFactoryClass() {
|
||||
return PigxFeignAutoConfiguration.class;
|
||||
return PigxFeignClientsRegistrar.class;
|
||||
}
|
||||
|
||||
private void validate(Map<String, Object> attributes) {
|
||||
@@ -188,15 +190,17 @@ public class PigxFeignClientsRegistrar
|
||||
return value;
|
||||
}
|
||||
|
||||
private String getUrl(Map<String, Object> attributes) {
|
||||
private String getUrl(BeanDefinitionRegistry registry, Map<String, Object> attributes) {
|
||||
|
||||
// 如果是单体项目自动注入 & url 为空
|
||||
String url = (String) attributes.get("url");
|
||||
boolean present = ClassUtils.isPresent("com.alibaba.cloud.nacos.discovery.NacosDiscoveryClient",
|
||||
this.getClass().getClassLoader());
|
||||
if (!StringUtils.hasText(url) && !present) {
|
||||
url = resolve(BASE_URL);
|
||||
Boolean isMicro = environment.getProperty("spring.cloud.nacos.discovery.enabled", Boolean.class, true);
|
||||
|
||||
if (isMicro) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String url = resolve(BASE_URL);
|
||||
|
||||
return FeignClientsRegistrar.getUrl(url);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user