fix:fix restTemplateCustomizer bean conflict causing service to fail to start properly.

1.13.1-2020.0.6
码匠君 2 years ago committed by Haotian Zhang
parent bac9ccda3d
commit 4d7e342059

@ -22,3 +22,4 @@
- [fix:fix rule-based router when using RestTemplate.](https://github.com/Tencent/spring-cloud-tencent/pull/1201) - [fix:fix rule-based router when using RestTemplate.](https://github.com/Tencent/spring-cloud-tencent/pull/1201)
- [fix:fix sct-all wrong spring boot version obtain.](https://github.com/Tencent/spring-cloud-tencent/pull/1205) - [fix:fix sct-all wrong spring boot version obtain.](https://github.com/Tencent/spring-cloud-tencent/pull/1205)
- [fix:fix swagger not working bug.](https://github.com/Tencent/spring-cloud-tencent/pull/1225) - [fix:fix swagger not working bug.](https://github.com/Tencent/spring-cloud-tencent/pull/1225)
- fix:fix restTemplateCustomizer bean conflict causing service to fail to start properly.

@ -89,7 +89,7 @@
<properties> <properties>
<!-- Project revision --> <!-- Project revision -->
<revision>1.13.0-2020.0.6</revision> <revision>1.13.1-2020.0.6</revision>
<!-- Spring Framework --> <!-- Spring Framework -->
<spring.framework.version>5.3.25</spring.framework.version> <spring.framework.version>5.3.25</spring.framework.version>

@ -36,6 +36,7 @@ import org.springframework.cloud.loadbalancer.config.LoadBalancerAutoConfigurati
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.util.CollectionUtils;
/** /**
* Auto-configuration of loadbalancer for Polaris. * Auto-configuration of loadbalancer for Polaris.
@ -52,14 +53,28 @@ import org.springframework.http.client.ClientHttpRequestInterceptor;
public class PolarisLoadBalancerAutoConfiguration { public class PolarisLoadBalancerAutoConfiguration {
@Bean @Bean
public RestTemplateCustomizer restTemplateCustomizer( public RestTemplateCustomizer polarisRestTemplateCustomizer(
@Autowired(required = false) RetryLoadBalancerInterceptor retryLoadBalancerInterceptor, @Autowired(required = false) RetryLoadBalancerInterceptor retryLoadBalancerInterceptor,
@Autowired(required = false) LoadBalancerInterceptor loadBalancerInterceptor) { @Autowired(required = false) LoadBalancerInterceptor loadBalancerInterceptor) {
return restTemplate -> { return restTemplate -> {
List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors()); List<ClientHttpRequestInterceptor> list = new ArrayList<>(restTemplate.getInterceptors());
// LoadBalancerInterceptor must invoke before EnhancedRestTemplateInterceptor // LoadBalancerInterceptor must invoke before EnhancedRestTemplateInterceptor
if (retryLoadBalancerInterceptor != null || loadBalancerInterceptor != null) {
int addIndex = list.size(); int addIndex = list.size();
if (CollectionUtils.containsInstance(list, retryLoadBalancerInterceptor) || CollectionUtils.containsInstance(list, loadBalancerInterceptor)) {
ClientHttpRequestInterceptor enhancedRestTemplateInterceptor = null;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) instanceof EnhancedRestTemplateInterceptor) {
enhancedRestTemplateInterceptor = list.get(i);
addIndex = i;
}
}
if (enhancedRestTemplateInterceptor != null) {
list.remove(addIndex);
list.add(enhancedRestTemplateInterceptor);
}
}
else {
if (retryLoadBalancerInterceptor != null || loadBalancerInterceptor != null) {
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
if (list.get(i) instanceof EnhancedRestTemplateInterceptor) { if (list.get(i) instanceof EnhancedRestTemplateInterceptor) {
addIndex = i; addIndex = i;
@ -70,6 +85,7 @@ public class PolarisLoadBalancerAutoConfiguration {
? retryLoadBalancerInterceptor ? retryLoadBalancerInterceptor
: loadBalancerInterceptor); : loadBalancerInterceptor);
} }
}
restTemplate.setInterceptors(list); restTemplate.setInterceptors(list);
}; };
} }

@ -70,7 +70,7 @@
</developers> </developers>
<properties> <properties>
<revision>1.13.0-2020.0.6</revision> <revision>1.13.1-2020.0.6</revision>
<!-- Dependencies --> <!-- Dependencies -->
<polaris.version>1.15.0</polaris.version> <polaris.version>1.15.0</polaris.version>

Loading…
Cancel
Save