Closed wangxing-git closed 4 years ago
Hope not to add the Environment
bean with @Primary
. Try adding a DelegatePropertyResolver
of @Primary
to avoid using Environment
directly.
@Bean
@Primary
public PropertyResolver primaryPropertyResolver(Environment environment) {
return new DelegatePropertyResolver(environment);
}
@AllArgsConstructor
public static class DelegatePropertyResolver implements PropertyResolver {
@Delegate(types = PropertyResolver.class)
private Environment environment;
}
Can you give an example project?
Can you give an example project?
Thank you for your reply. I created a sample to reproduce this issue.
After starting the project, visit http://localhost:8080/testFeign
to reproduce it.
And after removing the spring.cloud.loadbalancer.ribbon.enabled=false
configuration, it will be called normally.
The reason for adding the configuration of spring.cloud.loadbalancer.ribbon.enabled=false
is because there are the following warning messages:
2020-07-22 15:10:12.933 WARN 50316 --- [ main] ockingLoadBalancerClientRibbonWarnLogger : You already have RibbonLoadBalancerClient on your classpath. It will be used by default. As Spring Cloud Ribbon is in maintenance mode. We recommend switching to BlockingLoadBalancerClient instead. In order to use it, set the value of `spring.cloud.loadbalancer.ribbon.enabled` to `false` or remove spring-cloud-starter-netflix-ribbon from your project.
sample
Ok, Checking...
Bugfix on Dubbo Spring Boot, the further fix will be continued on Dubbo Spring Cloud https://github.com/alibaba/spring-cloud-alibaba/issues/1611
spring boot version: 2.2.8.RELEASE
spring cloud version: Hoxton.SR3
spring cloud alibaba version: 2.2.1.RELEASE
dubbo version: 2.7.6
openfeign client call error
The null pointer error is in: NamedContextFactory
And the value of
name
comes from LoadBalancerClientConfiguration:The property value of
LoadBalancerClientFactory.PROPERTY_NAME
is derived from NamedContextFactoryAccording to the analysis, it is found that the
Environment
bean set inNamedContextFactory.createContext
is not injected into theLoadBalancerClientConfiguration.reactorServiceInstanceLoadBalancer
method, because theDubboAutoConfiguration.primaryPropertyResolver
method defines anEnvironment
bean ofPrimary
, which causes thename
value to fail Obtained