【springcloud學習(dalston.sr1)】Eureka 客戶端服務注冊(含源代碼)(四)

d該系列項目整體介紹及源代碼請參照前面寫的一篇文章【springcloud學習(dalston.sr1)】項目整體介紹(含源代碼)(一)

?springcloud學習(dalston.sr1)系統文章匯總如下:

【springcloud學習(dalston.sr1)】項目整體介紹(含源代碼)(一)

【springcloud學習(dalston.sr1)】Eureka服務端集群的搭建(含源代碼)(二)

【springcloud學習(dalston.sr1)】Eureka單個服務端的搭建(含源代碼)(三)

【springcloud學習(dalston.sr1)】Eureka 客戶端服務注冊(含源代碼)(四)

【springcloud學習(dalston.sr1)】服務消費者通過restTemplate來訪問服務提供者(含源代碼)(五)

【springcloud學習(dalston.sr1)】Eureka 服務發現(含源代碼)(六)

【springcloud學習(dalston.sr1)】Ribbon負載均衡(含源代碼)(七)

【springcloud學習(dalston.sr1)】使用Feign實現接口調用(含源代碼)(八)

【springcloud學習(dalston.sr1)】Hystrix服務熔斷(含源代碼)(九)

【springcloud學習(dalston.sr1)】Hystrix服務降級(含源代碼)(十)

【springcloud學習(dalston.sr1)】Hystrix Dashboard服務監控(含源代碼)(十一)

【springcloud學習(dalston.sr1)】Zuul路由訪問映射規則配置及使用(含源代碼)(十二)

【springcloud學習(dalston.sr1)】Config配置中心-ConfigServer端與Git通信(含源代碼)(十三)

【springcloud學習(dalston.sr1)】Config配置中心-Configclient端通過和Config server端通信來獲取配置文件信息(含源代碼)(十四)

這篇文章主要介紹Eureka客戶端服務注冊到eureka的server端。

上篇文章【springcloud學習(dalston.sr1)】Eureka單個服務端的搭建(含源代碼)(三)里,我們已經創建好了eureka服務端工程。現在我們來創建一個簡單的eureka客戶端工程。

該項目是一個簡單的spring boot微服務,主要是一個簡單的接口,涉及到數據庫的訪問。通過訪問數據庫的商品表,來查詢一個商品列表,并返回json數據給前端。該模塊會用到microservicecloud-api項目的商品實體類,所以在pom文件中,需要引入該項目的依賴。

需要提前準備好數據庫的一張表,這里我用的是postgres數據庫,創建了一個商品表,包括商品ID和商品名稱兩個字段。如下圖

該項目的整體代碼結構如下:

(一)Eureka客戶端創建

(1)在IEDA中springcloud2015項目下新建一個microservicecloud-provider-8001的模塊,如下圖:

(2)Maven依賴添加

<?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"><parent><artifactId>springcloud2025</artifactId><groupId>com.company</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-provider-8001</artifactId><dependencies><dependency><groupId>com.company</groupId><artifactId>microservicecloud-api</artifactId><version>${project.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><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></dependency><!-- 將服務provider注冊進eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!-- actuator監控信息完善 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies></project>

可以看到POM文件用到了microservicecloud-api模塊,該模塊結構如下圖:

(3)在application.yml中添加如下配置文件信息

server:port: 8001mybatis:config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis配置文件所在路徑type-aliases-package: com.company.api.entity  #所有Entity別名類所在包mapper-locations: classpath:mybatis/mapper/*.xml #mapper映射文件spring:application:name: microservicecloud-goodsdatasource:type: com.alibaba.druid.pool.DruidDataSource  #當前數據源操作類型driver-class-name: org.postgresql.Driver    #postgres驅動包url: jdbc:postgresql://localhost:5432/postgres    #數據庫名稱username: postgrespassword: 123456dbcp2:min-idel: 5           #數據庫連接池的最小維持連接數initial-seze: 5       #初始化連接數max-total: 5          #最大連接數max-wait-millis: 200  #等待鏈接獲取的最大超時時間eureka:client: #客戶端注冊進eureka服務列表里service-url:defaultZone: http://localhost:7001/eureka/ #這里填eureka服務端的地址#http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #設置與erueka server交互的地址查詢服務和注冊服務,都需要依賴于這個地址instance:instance-id: microservicecloud-goods8001 #這里用于修改eureka服務注冊列表的status字段值,替換默認的展示prefer-ip-address: true #服務注冊列表中的status字段值,其訪問路徑可以顯示IP地址,而不是展示localhostinfo:app.name: company-microservicecloudcompany.name: www.company.combuild.artifactId: $project.artifactId$build.version: $project.version$

(4)創建mybatis mapper xml文件,dao接口,service接口,controller接口,啟動類

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis-org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings><setting name="cacheEnabled" value="true"/> <!-- 二級緩存開啟 --></settings>
</configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.company.provider.dao.GoodsDao"><select id="getGoods" resultType="com.company.api.entity.Goods">select good_id as goodId, good_name || '數據庫1' as goodName from public.lc_good limit 5</select>
</mapper>
package com.company.provider.dao;import com.company.api.entity.Goods;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface GoodsDao {List<Goods> getGoods();
}
package com.company.provider.service;import com.company.api.entity.Goods;import java.util.List;public interface GoodsService {List<Goods> getGoods();
}
package com.company.provider.service.impl;import com.company.api.entity.Goods;
import com.company.provider.dao.GoodsDao;
import com.company.provider.service.GoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class GoodsServiceImpl implements GoodsService {@Autowiredprivate GoodsDao goodsDao;@Overridepublic List<Goods> getGoods() {return goodsDao.getGoods();}
}
package com.company.provider.controller;import com.company.api.entity.Goods;
import com.company.provider.service.GoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/goods")
public class GoodsController {@Autowiredprivate DiscoveryClient discoveryClient;@Autowiredprivate GoodsService goodsService;@GetMapping("/list")public List<Goods> getGoods() {return goodsService.getGoods();}/*** 服務發現,提供一個接口可以查詢當前組件提供了哪些服務* @return*/@GetMapping("/discovery")public Object discovery() {List<String> services = discoveryClient.getServices();System.out.println("discovery服務列表" + services);List<ServiceInstance> instances = discoveryClient.getInstances("microservicecloud-goods".toUpperCase());instances.forEach(x ->System.out.println("serviceId:" + x.getServiceId()+ ",host:" + x.getHost()+ ",port:" + x.getPort()+ ",uri:" + x.getUri()));return discoveryClient;}
}
package com.company.provider;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient //服務啟動后會注冊到eureka服務中
@EnableDiscoveryClient //用于服務發現
public class Provider8001Application {public static void main(String[] args) {SpringApplication.run(Provider8001Application.class, args);}
}

(5)項目整體結構如下(注意:該項目引用的實體類Goods來自于microservicecloud-api項目,文章前面已有提及,并且已在pom文件中進行了引用):

(二)驗證eureka客戶端將服務注冊到eureka服務端的效果。

(1)首先我們啟動eureka服務端EurekaServer7001Application。

(2)啟動完成后,在瀏覽器輸入:http://localhost:7001查看如下,可以看到服務注冊列表為空的。

(3)然后我們啟動eureka客戶端Provider8001Application

(4)啟動完成后,我們首先訪問客戶端的一個接口,以確認客戶端服務是正常的,如下圖。這樣說明結果客戶端服務是正常的。

在瀏覽器輸入http://localhost:8001/goods/list

(5)然后我們在eureka頁面(http://localhost:7001/)刷新該網頁,可以看到該頁面多了一行,說明客戶端已經成功注冊到,并能在服務端看到。如下圖:

(6)需要說明的是如下幾項配置如果不添加,則eureka服務注冊界面的status字段的展示名稱也會有所變化,以及鼠標放上去時,展示的鏈接地址是localhost,而不是IP地址;還有點擊鏈接時會跳轉至錯誤頁,可以自行嘗試下,試試效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80499.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80499.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS Grid布局:從入門到實戰

CSS Grid布局&#xff1a;從入門到實戰 一、初識Grid布局 還在為網頁布局發愁嗎&#xff1f;Flexbox雖然好用&#xff0c;但當遇到復雜布局時&#xff0c;CSS Grid才是真正的王者。Grid布局是CSS中最強大的二維布局系統&#xff0c;它就像一張無形的網格紙&#xff0c;讓我們…

MongoDB 應用實戰

1. java 原生客戶端 引入maven 1 <dependencies> 2 <dependency> 3 <groupId>org.mongodb</groupId> 4 <artifactId>mongodb‐driver‐sync</artifactId> 5 <version>4.1.1</version> 6 </dependency> 7 </depende…

linux下tcp/ip網絡通信筆記1,

本文章主要為博主在學習網絡通信的筆記一個Udp_echo_server,和client的代碼實現 1&#xff0c;網絡發展&#xff0c;網絡協議&#xff0c;意識到網絡通信——不同主機的進程間通信&#xff0c; 2&#xff0c;學習如何在應用層調用系統提供的接口進行通信&#xff0c;echo_Udp…

前端二進制數據指南:從 ArrayBuffer 到高級流處理

前端開發中&#xff0c;二進制數據是處理文件、圖像、音視頻、網絡通信等場景的基礎。以下是核心概念和用途的通俗解釋&#xff1a; 前端二進制數據介紹 1. 什么是前端二進制數據&#xff1f; 指計算機原始的 0 和 1 格式的數據&#xff08;比如一張圖片的底層代碼&#xff…

Cacti 未經身份驗證SQL注入漏洞

0x00 前言 Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。 Cacti是通過 snmpget來獲取數據&#xff0c;使用 RRDtool繪畫圖形&#xff0c;而且你完全可以不需要了解RRDtool復雜的參數。 0x01 漏洞描述 漏洞存在于從graph_view.php文件調用的growt…

使用國內源加速Qt在線安裝

簡介&#xff1a; 在線安裝Qt時&#xff0c;會發現下載非常緩慢&#xff0c;可以用過使用國內鏡像源來加速安裝過程。 在線安裝包的下載過程&#xff1a; 1&#xff0c;打開下載頁面 https://www.qt.io/download-open-source 2&#xff0c;點擊 Download the Qt online ins…

C#上位機RS485通信控制變頻器

C#上位機使用Modbus RTU協議控制變頻器 一、RTU報文格式示例 通信命令碼&#xff1a; 03H:讀從機參數 06H:寫從機參數 10H:寫多個參數上位機寫單個寄存器&#xff1a;【從機地址】1字節【命令碼】1字節【寄存器地址高-低】2字節【數據值高-低】2字節【CRC校驗值低-高】…

OCC筆記:Brep格式

1. BREP格式簡介 BREP格式是Open CASCADE內核&#xff08;OCCT&#xff09;的原生數據模型&#xff0c;直接描述幾何體的邊界表示&#xff08;面、邊、頂點拓撲關系及幾何參數&#xff09;。于OCCT內核的算法計算&#xff08;如布爾運算、曲面細分&#xff09;&#xff0c;存儲…

Vue3進行工程化項目,保姆級教學(編譯軟件:vscode)大部分編譯平臺適用

目錄 1. 創建vue工程 1.1 第一步 1.2 選擇名稱和工件 1.3 選擇語言 1.4 自動下載js 1.5 運行vue工程 1.6 成功頁面 2. 更改vue工程安裝的位置 3. 更改運行工程方式 第一步 第二步 ?編輯 第三步 調試 ?編輯 運行項目 前面所學都是vue3的基礎&#xff0c;為了簡…

CSS常用選擇器

CSS選擇器用于選擇HTML元素并為其應用樣式。以下是CSS中最常用的選擇器類型&#xff1a; 基本選擇器 1.元素選擇器 - 通過HTML標簽名選擇元素 p { color: blue; } 2.類選擇器 - 通過class屬性選擇元素&#xff08;以.開頭&#xff09; .warning { color: red; } 3.ID選擇…

EmberGen導出序列圖到UE5

選擇Render節點 調整節點相關參數 然后選擇一個目錄 點擊導出Export Now即可 材質用FlipBook 如果是特效就SubUV

EXCEL Python 實現繪制柱狀線型組合圖和樹狀圖(包含數據透視表)

1、組合圖、數據透視表 &#xff08;1&#xff09;數據預處理 知識點 日期函數 year() month()數據透視表操作 同比計算公式 環比計算公式 &#xff08;2&#xff09;excel 數據透視表插入組合圖 a.2015~2017數據集處理方式&#xff1a; 操作&#xff1a; 結果 b.2020~20…

LabVIEW光譜檢測系統

腔衰蕩光譜技術&#xff08;CRDS&#xff09;憑借高精度和高靈敏度特性&#xff0c;成為微量氣體濃度檢測的常用方法&#xff0c;而準確獲取衰蕩時間是該技術應用的關鍵。基于LabVIEW平臺設計腔衰蕩信號在線處理系統&#xff0c;實現對衰蕩信號的實時采集、平均、擬合、顯示和保…

Flask快速入門和問答項目源碼

Flask基礎入門 源碼&#xff1a; gitee&#xff1a;我愛白米飯/Flask問答項目 - 碼云 目錄 1.安裝環境2.【debug、host、port】3.【路由params和query】4.【模板】5.【靜態文件】6.【數據庫連接】6.1.安裝模塊6.2.創建數據庫并測試連接6.3.創建數據表6.4.ORM增刪改查 6.5.ORM模…

flutter長列表 ListView、GridView、SingleChildScrollView、CustomScrollView區別

組件名稱用途/適合場景是否懶加載支持列表結構用法復雜度SingleChildScrollView適用于內容數量不大、不重復的頁面&#xff08;如表單、靜態內容&#xff09;? 否? 否??ListView適用于垂直方向的長列表&#xff0c;自動滾動&#xff1b;適合展示大量數據? 支持? 是??Li…

鴻蒙OSUniApp 開發的一鍵分享功能#三方框架 #Uniapp

使用 UniApp 開發的一鍵分享功能 在移動應用開發中&#xff0c;分享功能幾乎是必不可少的一環。一個好的分享體驗不僅能帶來更多用戶&#xff0c;還能提升產品的曝光度。本文將詳細講解如何在 UniApp 框架下實現一個簡單高效的一鍵分享功能&#xff0c;適配多個平臺。 各平臺分…

Vue-監聽屬性

監聽屬性 簡單監聽 點擊切換名字&#xff0c;來回變更Tom/Jerry&#xff0c;輸出 你好&#xff0c;Tom/Jerry 代碼 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>監聽屬性</title><!-- …

DeepSeek 賦能物聯網:從連接到智能的跨越之路

目錄 一、引言&#xff1a;物聯網新時代的開啟二、DeepSeek 技術揭秘2.1 DeepSeek 是什么2.2 DeepSeek 技術優勢 三、DeepSeek 與物聯網的融合之基3.1 物聯網發展現狀與挑戰3.2 DeepSeek 帶來的變革性突破 四、DeepSeek 在物聯網的多元應用場景4.1 智慧電力&#xff1a;開啟能源…

3.6/Q1,GBD數據庫最新文章解讀

文章題目&#xff1a;Global, regional, and national burden of geriatric depressive disorders in people aged 60 years and older: an analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.1186/s12991-025-00560-2 中文標題&#xff1a;60 歲及以上人…

LVGL學習筆記

文章目錄 一、 LVGL移植教程(GD32)一 并行驅動 LED二三一、 LVGL移植教程(GD32) 參考鏈接 1.GD32+LVGL移植教程(超詳細)——基于GD32F303X系列MCU 一 并行驅動 LED 根據您提供的引腳信號(DCLK、DISP、HSYNC、VSYNC、DE),可以判斷這是一款采用 TTL/Parallel RGB 接口…