Я использую OAuth2RestTemplate для передачи oauth-токена с запросами REST.Однако теперь мне нужно жестко закодировать мои URL-адреса, такие как
restTemplate.postForLocation("http://localhost:5555/other-service2/message", "Message")
, тогда как когда я использовал самостоятельно созданный bean-аннотированный (используя @LoadBalanced) компонент RestTemplate, я могу сделать что-то вроде
restTemplate.postForLocation("http://service1/other-service2/message", "Message")
Это связано с тем, что при использовании LoadBalanced он автоматически становится шаблоном отдыха ленты, который позволяет использовать функции обнаружения служб или Eureka, но когда вы аннотируете компонент OAuth2RestTemplate с @Loadbalanced, это вызовет какую-то ошибку ввремя выполнения при попытке использовать OAuth2RestTemplate, который говорит, что
o.s.b.a.s.o.r.UserInfoTokenServices : Could not fetch user details: class java.lang.IllegalStateException, No instances available for localhost
My OAuth2RestTemplate создание выглядит как
@LoadBalanced
@Bean
public OAuth2RestTemplate restTemplate(final UserInfoRestTemplateFactory factory) {
final OAuth2RestTemplate userInfoRestTemplate = factory.getUserInfoRestTemplate();
return userInfoRestTemplate;
}
Как я могу использовать функции обнаружения служб, а также функции балансировки нагрузки ленты Eureka, на OAuth2RestTemplate?