spring cloud服務提供與調用示例

来源:https://www.cnblogs.com/leiziv5/archive/2019/03/09/10502670.html
-Advertisement-
Play Games

本文創建方式採用intellij IDEA 創建項目 1.創建基於Eureka的註冊中心。 在打開項目中右鍵,選擇new 選擇moudle 然後下一步 輸入要創建的項目的信息 選擇web下麵的web,選擇cloud discovery下麵的 Eureka server 下一步,創建項目 然後同步po ...


本文創建方式採用intellij IDEA  創建項目

1.創建基於Eureka的註冊中心。

  在打開項目中右鍵,選擇new 選擇moudle

然後下一步

輸入要創建的項目的信息

 

 選擇web下麵的web,選擇cloud  discovery下麵的 Eureka server  下一步,創建項目

然後同步pom.xml文件內容、

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    </properties>

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

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

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

 

 在啟動文件中選擇

@SpringBootApplication
@EnableEurekaServer
public class ServerApplication {

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

}

配置文件

server:
  port: 8000
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false
    register-with-eureka: false
    serviceUrl:
      defaultZone: http://localhost:8000/eureka/
spring:
  application:
    name: spring-cloud-eureka

  創建完,我們去運行下,運行正常後,我們去訪問localhost:8000, 到下麵的界面,這樣我們Eureka 註冊中心就創建成功,

 

下麵我們去創建server端,和client;

server端呢創建中與Eureka選擇不同的在於cloud  discovery中,這裡需要選擇cloud Discovery

然後創建完,去同步對應的pom.xml文件

在啟動類編寫如下

@SpringBootApplication
@EnableDiscoveryClient
public class ServeroneApplication {

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

}


配置文件
server: port:
8001 eureka: instance: hostname: localhost client: serviceUrl: defaultZone: http://localhost:8000/eureka/ spring: application: name: spring-serverserver

我們需要編寫一個提供服務的介面

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String indesx(@RequestParam String name) {
        return "hello "+name+",this is first messge";
    }
}

這樣我們就可以實現我們的server端

然後我們去創建client端

client端多需要在server上創建多一個Feign

那麼我們在啟動類,如下

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class DemoApplication {

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

}

配置文件

server:
  port: 8002
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://localhost:8000/eureka/
spring:
  application:
    name: spring-client

那麼我們去寫調用server的服務

@FeignClient(name= "spring-serverserver")
public interface HelloRemote {
    @RequestMapping(value = "/hello")
    public String hello(@RequestParam(value = "name") String name);
}

實現介面

@RestController
public class ConsumerController {

    @Autowired
    HelloRemote lloRemote;

    @RequestMapping("/hello/{name}")
    public String index(@PathVariable("name") String name) {
        return lloRemote.hello(name);
    }
}

這樣我們就實現了服務的註冊與調用。

 

那麼我們去啟動服務進行測試,服務註冊成功,我們去啟動服務調用端

服務調用端成功,

那麼我們去測試下,我們先去測試看單獨訪問服務是否正常

輸入http://localhost:8001/hello?name=liwanlei  

顯示

那麼我們看下另外一個調用這個服務的服務

http://localhost:8002/hello/name

那麼我們看下返回

這樣我們調試成功。

戶端已經成功的通過feign調用了遠程服務,並且將結果返回到了瀏覽器。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天分享下各種快速冪(有點坑) ...
  • 我是一個小白而已,面試官居然問我,研究過演算法嗎?用遞歸寫冒泡排序會嗎?差點瘋掉,說實在的真沒怎麼用過遞歸。 我跟他說,你讓我用電腦試試,我肯定能整齣來,結果面試官沒給機會。特此紀念一下吧! 遞歸是什麼?通俗的講:在方法內部調用自己(相當於現實中的“鬼打牆”,不過我也沒遇到過)。 花了幾分鐘整齣來的, ...
  • 我們已經學習了字元串的使用方法,我們還學習了使用索引和分片操作字元串,經歷了這麼長的時間,相信大家也有所掌握;本節將討論並學習字元串的格式化與字元串的常用方法 <! more 字元串格式化 字元串是序列的一種,所以所有的通用序列操作當然都適用啦,這裡就不再重覆了,下麵我們來探討字元串的格式化 何為字 ...
  • Java語言程式中判斷兩個變數是否相等有兩種方式:一是運用==運算符,二是運用equals方法。 1. ==運算符 對於==運算符來說,如果兩個變數是基本類型的,並且是數值類型,則只要它們的值相等,就會返回true;然而如果是兩個引用類型的變數,則分為兩種情況:1)它們指向同一個對象,結果返回tru ...
  • 1. 共用的忽略設置方式 本地倉庫根目錄,創建.gitignore文件,並編輯正則匹配需要忽略的文件或目錄。 .gitignore文件需要上傳到倉庫,同時會影響到他人,共用忽略設置 註意: .gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改.git ...
  • 1.計算“1+2+3+...+100的和 ” 的代碼,註重看 註解的 for迴圈的執行步驟過程 2.for迴圈註意事項:用逗號把多個初始化語句和迭代語句分隔開 for迴圈代碼: for(int i=1,j=i+10;i<5;i++,j=i*2){ System.out.println("i="+i+ ...
  • 1.while語法結構的定義和執行流程圖 2.實例:計算1+2+3+...+100的和 代碼: public class TestWhile { public static void main(String[] args) { // 計算1+2+3+...+100的和 int i=1; int su ...
  • 一:Spring的介紹 什麼是Spring? 什麼是Spring? Spring 是一個輕量級的 DI / IoC 和 AOP 容器的開源框 適用範圍 適用範圍 所有java應用,包括java SE,java EE 根本使命 根本使命 簡化Java開發 Spring 中常用術語: Spring 中常 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...