服务发现、服务注册统一都封装在eureka-client依赖,因此这一步与服务注册时一致。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
服务发现也需要知道eureka地址,因此第二步与服务注册一致,都是配置eureka信息:
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
????????服务拉取就是找注册中心要信息,以前我们写ip地址,现在我们写服务名
? ? ? ? 负载均衡就是对服务名相同的,但是ip地址不同的进行均匀的访问
// 2.利用RestTemplate发起http请求,查询用户
// 2.1.url路径
// String url = "http://localhost:8081/user/" + order.getUserId(); // 之前的硬编码
String url = "http://userservice/user/" + order.getUserId(); // 现在的
// 2.2.发送http请求,实现远程调用
// 第二个参数是你想要的返回类型,会自动帮我们将JSON对象反序列化为User对象
User user = restTemplate.getForObject(url, User.class);
// bean的注入只能放到配置类中,启动类带有main()函数,带有@SpringBootApplication注解本身也是配置类
/**
* 创建RestTemplat并注入Spring容器
* @return
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}