1. 程式人生 > >十分鐘快速建立 Spring Cloud 專案

十分鐘快速建立 Spring Cloud 專案

一般來說,Intelij IDEA 可以通過 Maven Archetype 來快速生成Maven專案,其實 IDEA 集成了 Spring 官方提供的 Spring Initializr,可以非常方便的建立 Maven 專案,而且能自動生成啟動類和單元測試程式碼。

下面我們學習如何快速搭建一個 Spring Cloud 工程,示例使用 Spring Boot 2.2.2 版本,使用少量的程式碼,可以在半小時內完成專案的搭建。

本文為新手向教程,幫助大家快速入門 Spring Cloud 開發,也作為「跟我學 Spring Cloud Alibaba」系列的補充文章,文章會在公眾號「架構進化論」進行首發更新,歡迎關注。

一、建立一個新工程

1.建立一個新工程,選擇maven,點選下一步

2.填寫專案相關的資訊,進到下一步

3.填寫專案名和專案位置,命名為 spring cloud demo,點選 finish

4.這樣我們就建立好了一個普通專案,該專案是作為一個Parent project存在的,可以直接刪除src檔案

 

二、新增 EurekaServer 子專案

1.在專案上右鍵-->new-->module-->Spring Initializr-->next

 

 

2.填寫專案相關資訊,這裡命名為 eureka-server,進入下一步

 

3.選擇Cloud Discovery-->Eureka Server,下一步

 

 

4.填寫專案名和專案位置等,完成

 

5.IDEA會自動生成Application類,新增@EnableEurekaServer,該註解表明標註類是一個Eureka Server

 

6.修改配置,切換啟動埠,預設生成的專案配置檔案是 application.properties,這裡我替換成application.yml

# 服務註冊中心 (單節點)
server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false # 表示是否從Eureka Server獲取註冊資訊,預設為true.因為這是一個單點的Eureka Server,不需要同步其他的Eureka Server節點的資料,這裡設定為false
    register-with-eureka: false # 表示是否將自己註冊到Eureka Server,預設為true.由於當前應用就是Eureka Server,故而設定為false.
    service-url:
      # 設定與Eureka Server的地址,查詢服務和註冊服務都需要依賴這個地址.預設是http://localhost:8761/eureka/;多個地址可使用','風格.
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

  

eureka的配置資訊可以檢視 org.springframework.cloud.netflix.eureka. EurekaClientConfigBean ,參考原始碼瞭解含義。

 

7.啟動專案,在瀏覽器中輸入http://localhost:8761/ ,訪問Eureka控制檯,服務正常啟動

 

8.如果啟動報錯,配置檔案未生效,檢查下 target 目錄下是否正確引用了 application.yml 檔案。

 

三、新增 EurekaProducer 服務生產者

1.按照同樣的方式,建立一個專案,這裡我們建立一個Spring Boot風格的服務,

建立時需要勾選 Spring Cloud Discover--> Eureka Discover Client 和 Spring Web 的依賴。

 

2.在application啟動類中加入註解@EnableEurekaClient,表明自己屬於一個生產者。這裡為了方便測試,直接使用@RestController獲取返回值。

 

 

3.修改配置,註冊到Eureka Server。

server:
  port: 8765

spring:
  application:
    name: eureka-producer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka # 指定服務註冊中心

  

4.啟動應用,重新整理Eureka控制檯,可以看到服務已經註冊到Eureka上

 

5.如果啟動有問題,檢查是否缺少Spring Boot web的依賴包,可以嘗試新增如下配置:

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

  

四、建立 Eureka Consumer 服務消費者

1.通過 Spring Initializr,建立一個 Eureka Discovery Client 模組,同時要勾選加入Spring Web依賴。

 

2.修改原有配置,指定服務註冊中心,這裡還是使用yml檔案。

server:
  port: 8763

spring:
  application:
    name: eureka-consumer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka # 指定服務註冊中心

  

2.在啟動類中新增@EnableDiscoveryClient表明標註類是消費者,加入restTemplate來消費相關的服務。

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {

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

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

}

  

3.建立controller層,消費遠端服務

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class DemoController {

@Autowired
RestTemplate restTemplate;

@RequestMapping("greet")
public String sayHello(@RequestParam String name){

return restTemplate.getForObject("http://EUREKA-PRODUCER/sayHello?param=" + name, String.class);
}

}

  

4.配置完畢以後,啟動服務消費者,重新整理Eureka控制檯,可以看到消費者已經註冊。 

 

5.開啟瀏覽器輸入localhost:{server.port}/path 進行服務呼叫,

這裡我用 http://localhost:8763/greet?name=eureka ,可以看到請求正確返回,正確呼叫了服務提供者。

五、總結

本文通過IDEA的外掛,快速建立了一個基於Eureka進行服務發現的Spring Cloud工程例項。
除了整合外掛,也可以直接訪問 http://start.spring.io ,通過引導,在腳手架中建立自己的專案,匯入到開發工具中,感興趣的同學可以去試下。

&n