1. 程式人生 > >SpringCloud實現服務間呼叫(RestTemplate方式)

SpringCloud實現服務間呼叫(RestTemplate方式)

上一篇文章《SpringCloud搭建註冊中心與服務註冊》介紹了註冊中心的搭建和服務的註冊,本文將介紹下服務消費者呼叫服務提供者的過程。

本文目錄

一、服務呼叫流程二、服務提供者三、服務消費者四、服務呼叫實戰

一、服務呼叫流程

總體流程是首先啟動註冊中心,服務提供者提供服務並註冊到註冊中心,消費者從註冊中心中獲取服務並執行。

實現服務呼叫需要有三個角色:服務註冊中心、服務提供者和服務消費者,其中服務註冊中心和服務提供者上一篇文章已經實現了,下面會詳細演示下服務消費者搭建並呼叫服務的過程。

二、服務提供者

改造下上篇文章中的服務提供者,新增一個controller,UserController.java程式碼如下:

/**
 * 使用者服務
 */
@Slf4j
@RestController
@RequestMapping("/provider")
public class UserController {

    static Map<Integer, User> userMap = new HashMap<>();

    static {
        //模擬資料庫
        User user1 = new User(1, "張三", "123456");
        userMap.put(1, user1);
        User user2 = new User(2, "李四", "123123");
        userMap.put(2, user2);
    }

    /**
     * 根據id 查詢
     */
    @RequestMapping("/getUser")
    public String getUser(Integer id) {
        User user = userMap.get(id);
        return JSON.toJSONString(user);
    }

}

三、服務消費者

首先新建一個SpringBoot專案,命名spring-cloud-user-consumer,然後按照下面步驟編寫程式碼即可。

  1. pom.xml程式碼

新增eureka-server的依賴,程式碼如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version><!-- eureka版本 -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  1. 啟動類程式碼

啟動類添加註解@EnableDiscoveryClient,新增該註解後,專案就具有了服務註冊的功能,程式碼如下:

@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudUserConsumerApplication {

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudUserConsumerApplication.class, args);
    }

}
  1. 配置檔案

使用yml的配置檔案,application.yml配置如下:

server:
  port: 8082 #服務埠
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9001/eureka/
spring:
  application:
    name: user-service-consumer

四、服務呼叫實戰

  1. 啟動服務中心並註冊服務

程式碼編寫之後,按順序啟動spring-cloud-eureka、spring-cloud-user-service和spring-cloud-user-consumer,先訪問註冊中心http://localhost:9001/,出現下圖說明註冊中心和兩個服務以及註冊成功。


註冊中心執行截圖
  1. 服務呼叫

開啟postman訪問http://localhost:8082/consumer/getUser?id=2,出現下圖後說明服務已經呼叫成功。


postman呼叫截圖

 

到此SpringCloud實現服務間呼叫功能已經全部實現,有問題歡迎留言溝通哦!

完整原始碼地址: https://github.com/suisui2019/springboot-study

推薦閱讀
1.SpringCloud搭建註冊中心與服務註冊
2.SpringBoot整合ActiveMQ,看這篇就夠了!
3.別在 Java 程式碼裡亂打日誌了,這才是正確的打日誌姿勢!
4.編碼神器Lombok,學會後開發效率至少提高一倍!
5.利用Spring Boot+zxing,生成二維碼還能這麼簡單


限時領取免費Java相關資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高併發分散式、大資料、機器學習等技術。
關注下方公眾號即可免費領取:

Java碎碎念公眾號