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>

初学者,出现的原因和解决办法仅本人理解,不完全保证正确性

posted @ 2022-05-12 15:17  叶榆不业余  阅读(1093)  评论(0)    收藏  举报