Spring Cloud 使用RestTemplate调用服务时出现500
RestTemplate调用服务时,请求方式和路径正确,访问时出现500
java.net.UnKnownHostExceprion: 服务名
版本信息
| 组件 | version |
|---|---|
| Spring Cloud | 2020.0.1 |
| Spring Boot | 2.4.2 |
| Spring Cloud alibaba | 2021.1 |
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
Service
@Service
public class RestTemplateService {
/**
* 调用方式一:
* 使用RestTemplate调用注册子模块接口方法
*/
@Autowired
private RestTemplate restTemplate;
public String getServe(){
// http://调用的服务yml配置的服务名/请求路径
String name=restTemplate.getForObject("http://provider/test/hello",String.class);
return name;
}
}
Controller
@RequestMapping("/consumer")
@RestController
public class TestController {
@Autowired
private RestTemplateService restTemplateService;
@RequestMapping("/getProvideServe")
public String getProvideServe(){
return restTemplateService.getServe();
}
}
调用方式完全正确,但出现访问500
原因:高版本的SpringCloud已经不再使用Netflix,也没有了Netfilx自带的Ribbon。
解决办法:添加Loadbalancer依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
初学者,出现的原因和解决办法仅本人理解,不完全保证正确性

浙公网安备 33010602011771号