Skip to content

Commit

Permalink
🔧 避免各种依赖的地方组件造成 BeanPostProcessorChecker 警告
Browse files Browse the repository at this point in the history
  • Loading branch information
lltx committed Apr 19, 2024
1 parent 09cbd8d commit e9e0a03
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
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;
Expand Down Expand Up @@ -68,11 +67,12 @@ public void setBeanClassLoader(ClassLoader classLoader) {
}

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;
Expand All @@ -93,13 +93,12 @@ private void registerFeignClients(BeanDefinitionRegistry registry) {
continue;
}

registerClientConfiguration(registry, getClientName(attributes), className,
attributes.get("configuration"));
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);
Expand All @@ -116,13 +115,8 @@ private void registerFeignClients(BeanDefinitionRegistry registry) {
}

definition.addPropertyValue("type", className);
definition.addPropertyValue("dismiss404",
Boolean.parseBoolean(String.valueOf(attributes.get("dismiss404"))));
Object fallbackFactory = attributes.get("fallbackFactory");
if (fallbackFactory != null) {
definition.addPropertyValue("fallbackFactory", fallbackFactory instanceof Class ? fallbackFactory
: ClassUtils.resolveClassName(fallbackFactory.toString(), null));
}
definition.addPropertyValue("decode404", attributes.get("decode404"));
definition.addPropertyValue("fallback", attributes.get("fallback"));
definition.addPropertyValue("fallbackFactory", attributes.get("fallbackFactory"));
definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);

Expand Down Expand Up @@ -197,7 +191,7 @@ private String resolve(String value) {
return value;
}

private String getUrl(Map<String, Object> attributes) {
private String getUrl(BeanDefinitionRegistry registry, Map<String, Object> attributes) {

// 如果是单体项目自动注入 & url 为空
Boolean isMicro = environment.getProperty("spring.cloud.nacos.discovery.enabled", Boolean.class, true);
Expand All @@ -206,15 +200,7 @@ private String getUrl(Map<String, Object> attributes) {
return null;
}

Object objUrl = attributes.get("url");

String url = "";
if (StringUtils.hasText(objUrl.toString())) {
url = resolve(objUrl.toString());
}
else {
url = resolve(BASE_URL);
}
String url = resolve(BASE_URL);

return FeignClientsRegistrar.getUrl(url);
}
Expand Down Expand Up @@ -267,16 +253,6 @@ private void registerClientConfiguration(BeanDefinitionRegistry registry, Object
builder.getBeanDefinition());
}

private void registerClientConfiguration(BeanDefinitionRegistry registry, Object name, Object className,
Object configuration) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(FeignClientSpecification.class);
builder.addConstructorArgValue(name);
builder.addConstructorArgValue(className);
builder.addConstructorArgValue(configuration);
registry.registerBeanDefinition(name + "." + FeignClientSpecification.class.getSimpleName(),
builder.getBeanDefinition());
}

@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, SpringAp

// 避免 sentinel 1.8.4+ 心跳日志过大
System.setProperty("csp.sentinel.log.level", "OFF");

// 避免各种依赖的地方组件造成 BeanPostProcessorChecker 警告
System.setProperty("logging.level.org.springframework.context.support.PostProcessorRegistrationDelegate",
"ERROR");
}

@Override
Expand Down

0 comments on commit e9e0a03

Please sign in to comment.