【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.mzph.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 接口…