gpt4 book ai didi

spring - 无法注入(inject) LoadBalanced 注释的 OAuth2RestTemplate

转载 作者:行者123 更新时间:2023-12-04 02:14:55 24 4
gpt4 key购买 nike

我正在使用 Spring Cloud Angel.SR4。我用于创建 OAuth2RestTemplate bean 的配置类如下:

@Configuration
public class OAuthClientConfiguration {
@Autowired
private MyClientCredentialsResourceDetails resource;

public OAuthClientConfiguration() {
}

@Bean
@Qualifier("MyOAuthRestTemplate")
public OAuth2RestTemplate restTemplate() {
return new OAuth2RestTemplate(this.resource);
}
}

这个配置完全没问题,因为我在 Feign RequestInterceptor 中使用这个 RestTemplate 来向 feign 请求注入(inject)访问 token 。问题是,当我使用 @LoadBalanced 注释 Autowiring 的 OAuth2RestTemplate 时,依赖项注入(inject)引擎会引发 NoSuchBeanDefinitionException 异常。例如,以下将引发异常:

@LoadBalanced
@Autowired
@Qualifier("MyOAuthRestTemplate")
private OAuth2RestTemplate restTemplate;

当我删除 @LoadBalanced 时,一切正常。 @LoadBalanced 有什么问题?我是否需要任何其他配置(我已经有 @EnableEurekaClient)?

最佳答案

我找到了解决方法。问题是我误解了 @LoadBalanced 注释。这只是自动创建的负载平衡 RestTemplate bean 的限定符,它不会围绕带注释的 RestTemplate 创建代理以注入(inject)负载平衡功能。

看到这个之后https://github.com/spring-cloud/spring-cloud-commons/blob/v1.0.3.RELEASE/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java ,我修改了我的 OAuth2RestTemplate bean 定义如下,它解决了这个问题。

@Bean
@Qualifier("MyOAuthRestTemplate")
public OAuth2RestTemplate restTemplate(RestTemplateCustomizer customizer) {
OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(this.resource);
customizer.customize(restTemplate);
return restTemplate;
}

关于spring - 无法注入(inject) LoadBalanced 注释的 OAuth2RestTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com