一、OrderApp
package com.wangcj.api.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
//将当前服务注册到eureka上
@EnableEurekaClient
public class OrderApp {
public static void main(String[] args) {
SpringApplication.run(OrderApp.class, args);
}
//解决RestTemplate找不到,应把RestTemplate注册到springboot容器中 @Bean
//如果使用RestTemplate 以别名(serviceid)方式进行调用要依赖ribbon负载均衡器 @LoadBalanced
//@LoadBalanced能让RestTemplate在请求时拥有客户端负载均衡的能力
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
二、调用
package com.wangcj.api.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class OrderController {
//RestTemplate 是由springboot web组件提供,默认整合 ribbon负载均衡器
//RestTemplate 方式底层是采用httpclient技术
@Autowired
private RestTemplate restTemplate;
/*
* 在springcloud中有两种方式调用 resttemplate、feign(springcloud)
*/
//订单服务调用会员服务
@RequestMapping("/getOrder")
public String getOrder() {
// 两种方式,一种是采用 服务别名调用,一种是直接使用地址调用
//String result = restTemplate.getForObject("http://127.0.0.1:8000/getMember", String.class);
String url = "http://app-member/getMember";
String result = restTemplate.getForObject(url, String.class);
return result;
}
}