下面列出了怎么用org.springframework.beans.factory.SmartInitializingSingleton的API类实例代码及写法,或者点击链接到github查看源代码。
@Bean
public SmartInitializingSingleton loadBalancedAsyncRestTemplateInitializer2(
final List<AsyncRestTemplateCustomizer> customizers) {
return new SmartInitializingSingleton() {
@Override
public void afterSingletonsInstantiated() {
logger.info("init AsyncRestTemplateCircuitBreaker start");
for (AsyncRestTemplate restTemplate : AsyncRestTemplateCircuitBreakerAutoConfiguration.this
.restTemplates) {
AsyncRestTemplateCircuitInterceptor interceptor =
new AsyncRestTemplateCircuitInterceptor(circuitBreakerCore);
logger.info("add AsyncRestTemplateCircuitInterceptor first");
List<AsyncClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
interceptors.add(0, interceptor);
restTemplate.setInterceptors(interceptors);
}
logger.info("init AsyncRestTemplateCircuitBreaker end");
}
};
}
@Bean
public SmartInitializingSingleton loadBalancedRestTemplateInitializer2(
final ObjectProvider<List<RestTemplateCustomizer>> restTemplateCustomizers) {
return () -> {
logger.info("RestTemplateResilienceAutoConfiguration init2");
for (RestTemplate restTemplate : RestTemplateCircuitBreakerAutoConfiguration.this.restTemplates) {
List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
logger.info("RestTemplate init2 start,interceptor size:" + interceptors.size());
//for (ClientHttpRequestInterceptor interceptor : interceptors) {
//logger.info("RestTemplate init2 interceptor ing:"+interceptor.getClass().getCanonicalName());
//}
//logger.info("RestTemplate init2 Customizer end");
ClientHttpRequestInterceptor interceptor1 = new RestTemplateCircuitBreakerInterceptor
(circuitBreakerCore);
interceptors.add(0, interceptor1);
restTemplate.setInterceptors(interceptors);
logger.info("RestTemplate init2 end,add CircuitBreaker interceptor");
}
};
}
@Bean
public SmartInitializingSingleton loadBalancedAsyncRestTemplateInitializer2(
final List<AsyncRestTemplateCustomizer> customizers) {
return new SmartInitializingSingleton() {
@Override
public void afterSingletonsInstantiated() {
logger.info("Init AsyncRestTemplateRateLimiterConfiguration");
for (AsyncRestTemplate restTemplate : AsyncRestTemplateRateLimiterConfiguration.this.restTemplates) {
List<AsyncClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
logger.debug("AsyncRestTemplate init start, interceptor size:" + interceptors.size());
AsyncClientHttpRequestInterceptor interceptor =
new AsyncRestTemplateRateLimiterInterceptor(serviceName);
interceptors.add(0, interceptor);
logger.debug("AsyncRestTemplate init end, Add AsyncRestTemplateRateLimiterInterceptor");
restTemplate.setInterceptors(interceptors);
}
}
};
}
@Bean
public SmartInitializingSingleton loadBalancedRestTemplateInitializer3(
final ObjectProvider<List<RestTemplateCustomizer>> restTemplateCustomizers) {
return () -> {
logger.info("Init RestTemplateRateLimiterAutoConfiguration");
for (RestTemplate restTemplate : RestTemplateRateLimiterAutoConfiguration.this.restTemplates) {
List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
logger.debug("RestTemplate init start, interceptor size:" + interceptors.size());
ClientHttpRequestInterceptor interceptor = new RestTemplateRateLimiterInterceptor(serviceName);
interceptors.add(0, interceptor);
restTemplate.setInterceptors(interceptors);
logger.debug("RestTemplate init end, add RestTemplateRateLimiterInterceptor");
}
};
}
@Bean
public SmartInitializingSingleton metricsAsyncRestTemplateInitializer(
final ObjectProvider<List<AsyncRestTemplate>> asyncRestTemplatesProvider,
final RestTemplatePostProcessor customizer) {
return () -> {
final List<AsyncRestTemplate> asyncRestTemplates = asyncRestTemplatesProvider.getIfAvailable();
if (!CollectionUtils.isEmpty(asyncRestTemplates)) {
asyncRestTemplates.forEach(customizer::customize);
}
};
}
@Bean
public SmartInitializingSingleton metricsRestTemplateInitializer(
final ObjectProvider<List<RestTemplate>> restTemplatesProvider,
final RestTemplatePostProcessor customizer) {
return () -> {
final List<RestTemplate> restTemplates = restTemplatesProvider.getIfAvailable();
if (!CollectionUtils.isEmpty(restTemplates)) {
restTemplates.forEach(customizer::customize);
}
};
}
@Bean
public SmartInitializingSingleton loadBalancedRestTemplateInitializerDeprecated(
final ObjectProvider<List<RestTemplateCustomizer>> restTemplateCustomizers) {
return () -> restTemplateCustomizers.ifAvailable(customizers -> {
for (RestTemplate restTemplate : LoadBalancerAutoConfiguration.this.restTemplates) {
for (RestTemplateCustomizer customizer : customizers) {
customizer.customize(restTemplate);
}
}
});
}
@Bean
public SmartInitializingSingleton loadBalancedAsyncRestTemplateInitializer(
final List<AsyncRestTemplateCustomizer> customizers) {
return () -> {
for (AsyncRestTemplate restTemplate : AsyncRestTemplateCustomizerConfig.this.restTemplates) {
for (AsyncRestTemplateCustomizer customizer : customizers) {
customizer.customize(restTemplate);
}
}
};
}