在上一篇文章Eureka服務注冊發現執行個體中,我們示範了微服務的注冊與發現,在此基礎上,這篇文章我們示範通過restTemplate來實作對springcloud微服務的調用。
1用spring boot建立一個消費者工程,引入eureka依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
2修改配置檔案
#微服務端口
server.port=2200
#微服務應用名
spring.application.name=consumer
#表示表示是否從EurekaServer擷取注冊資訊,預設為true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://localhost:8260/eureka/
3修改啟動檔案
修改啟動檔案ConsumerApplication.java,引入注解@EnableDiscoveryClient,建立一個restTemplate Bean,注意添加@LoadBalanced這個注解,否則調用的時候報java.net.UnknownHostException:,代碼如下:
package com.yuxiaolong;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {
@Bean(value = "restTemplate")
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
4寫一個controller類調用服務端方法
在controller類中調用wojia服務端中的微服務,代碼如下:
package com.yuxiaolong.controller;
import com.yuxiaolong.model.ModuleDO;
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;
import java.util.Arrays;
import java.util.List;
/**
* Created by yuxl on 2019/3/1.
*/
@RestController
@RequestMapping(value = "/module")
public class ModuleController {
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/list")
public List<ModuleDO> listModules(){
ModuleDO[] moduleDOS = this.restTemplate.getForObject("http://wojia/module/list",ModuleDO[].class);
return Arrays.asList(moduleDOS);
}
}
5啟動服務,請求接口
依次啟動上一篇文章Eureka服務注冊發現執行個體中提到的Eureka注冊中心和微服務提供者wojia,再啟動本文中的消費者服務consumer,在浏覽器中輸入請求http://localhost:2200/module/list,傳回結果如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxMjN4UTOyETMxAzMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
微信掃下面二維碼添加公衆号議碼評川,可擷取java web、大資料、人工智能等相關學習資料。