1. 导入jar包
<!--ribbon-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!-- 引入SpringCloud Eureka client的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<!-- 约束整个项目的SpringCloud版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. 入口类
@SpringBootApplication
/**
* 声明当前客户端为可被发现
* 不仅可以注册到Eureka Server 也可以注册到其他注册中心
*/
@EnableDiscoveryClient
public class OrdersforgoodsApplication {
public static void main(String[] args) {
SpringApplication.run(OrdersforgoodsApplication.class, args);
}
/**
* @LoadBalanced 声明当前项目可以使用ribbon负载均衡
* @return
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
3. conterller 控制层
@RestController
public class Conterllers {
@Value("${server.port}")//获取配置文件数据
private String post;
@Autowired
private RestTemplate restTemplate;
@GetMapping("orderidpost")
public String getproductbyid(Integer id){
/**
* 调用商品服务一起返回
*/
/**
* 通过RestTemplate 将服务调用 IP+端口号 是写死的
* 这样不能负载均衡
*
* 如 负载均衡不能写成 IP+端口号 需要写成被调用的服务名称
*/
String url = "http://SpringBoot-Cloud/getidpost?id="+id;
String forObject = restTemplate.getForObject(url, String.class);
return "查询成功: 商品信息为:"+forObject;
}