Spring Boot + Cloud RestTemplate 호출 IP 또는 도 메 인 이름

SpringBoot + Cloud 프로젝트 에서 저 희 는 자동 으로 설 정 된 OAuth 2 RestTemplate, RestTemplate 를 사 용 했 습 니 다. 그러나 이 restTemplate 를 사용 할 때 url 은 서비스의 이름 이 어야 합 니 다. 실제 도 메 인 이나 ip 의 url 을 호출 하려 면 오류 가 발생 할 수 있 습 니 다. 다음 과 같 습 니 다.
UriComponents b = UriComponentsBuilder.fromUriString("http://www.baidu.com").build();
String str  = rest.getForObject(b.toUri(), String.class);

잘못
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No instances available for www.baidu.com

잘못된 추적 체인 을 보면 자동 으로 주 입 된 restTemplate 에 cloud. netflix * 패키지 아래 interceptor 가 추가 되 어 있 기 때문에 기본적으로 RibbonLoadBalancer Client 를 통 해 등록 센터 의 인 스 턴 스 를 찾 습 니 다. 예 를 들 어 위의 코드, www. baidu. com 은 존재 하지 않 을 것 입 니 다. 그래서 잘못 보 고 했 습 니 다.
한참 동안 찾 았 는데, 해결 방안 은 스스로 정의 하거나 resttemplate 를 만 들 면 되 며, 자동 설정 을 사용 하지 않 습 니 다.
@Bean(name="remoteRestTemplate")
public RestTemplate restTemplate() {
    return new RestTemplate();
}
@Autowired
private OAuth2RestTemplate o2rest;
@Autowired
@Qualifier(value = "remoteRestTemplate")
private RestTemplate rest;

좋은 웹페이지 즐겨찾기