关于SpringCloud的中的Eureka使用方法

这篇具有很好参考价值的文章主要介绍了关于SpringCloud的中的Eureka使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先创建一个空项目:

创建父工程shop_parent 在IDEA中创建父工程 shop_parent 并引入坐标 :

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.9.RELEASE</version>
</parent>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Hoxton.SR10</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

继续创建微服务模块也就是子模块:product_service 、order_service

关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring

搭建maven项目:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.2</version>
    </dependency>
    <!--引入EurekaClient-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>
要注意一定要指向父模块:没有的需要自己配置

关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring

 实现代码中的实体类:

@Data
public class Product {
    private Long id;
    private String productName;
    private Integer status;
    private BigDecimal price;
    private String productDesc;
    private String caption;
    private Integer inventory;
}
编写dao:采用的是SpringBoot和MybatisPlus
public interface ProductMapper extends BaseMapper<Product> {
}
编写service:
public interface ProductService extends IService<Product> {
}
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}
编写web:
@RestController
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private ProductService productService;
    @GetMapping("/{id}")
    public Product findById(@PathVariable Long id){
        Product product = productService.getById(id);
        return product;
    }
}
创建配置类:application.yml
server:
  port: 9010 #端口
spring:
  application:
    name: productservice #服务名称
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
#mp日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config: #设置表名前缀
      table-prefix: tb_
      id-type: assign_uuid
#配置Eureka
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka
 创建启动类:
@SpringBootApplication
@MapperScan("com.dao") // 指定扫描的 Mapper 接口所在的包
public class ProductApp {
    public static void main( String[] args ) {
        SpringApplication.run(ProductApp.class);
    }

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

搭建order与上一个模块一样不一一叙述了:

@Data
public class Order {
    private Long id;
    private Long userId;
    private Long productId;
    private Long number;
    private String productName;
    private String username;
    private BigDecimal price;
    private BigDecimal amount;
}
public interface OrderMapper extends BaseMapper<Order> {

}
public interface OrderService extends IService<Order> {
}
@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {

}
@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private OrderService orderService;

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/{id}")
    public Product findById(@PathVariable Long id){
        Product product = restTemplate.getForObject("http://productservice/product/1", Product.class);
//Order order = orderService.getById(id);
        return product;
//        Order order = orderService.getById(id);
//        return order;
    }
}
server:
  port: 9020 #端口
spring:
  application:
    name: orderservice #服务名称
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
#mp日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config: #设置表名前缀
      table-prefix: tb_
      id-type: assign_uuid
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9000/eureka/
@SpringBootApplication
@MapperScan("com.dao") // 指定扫描的 Mapper 接口所在的包
public class SpringOrderApp{
    public static void main( String[] args ) {
        SpringApplication.run(SpringOrderApp.class);
    }

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

 通过RestTemplate调用微服务:

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}
@Autowired
private RestTemplate restTemplate ;
@GetMapping ( "/{id}" )
public Product findById ( @PathVariable Long id ){
Product product =
restTemplate . getForObject ( "http://localhost:9010/product/1" , Product . class );
//Order order = orderService.getById(id);
return product ;
}
IDEA 开启并配置 services 窗口 关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring

搭建Eureka注册中心:

关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring

创建 eureka_server 子模块:
同上
引入maven坐标:
<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
</dependencies>
配置application.yml:
server:
  port: 9000
spring:
  application:
    name: eurekaserver #eureka的服务名称
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:9000/eureka
配置启动类:
@SpringBootApplication
@EnableEurekaServer //激活Eureka Server端配置
public class EurekaServerApp
{
    public static void main( String[] args )
    {
        SpringApplication.run(EurekaServerApp.class);
    }
}

启动两个实例:

-Dserver.port=9011

服务拉取 String url = "http://productservice/product/" + id ;
关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring
order-service项目的启动类中的RestTemplate添加负载均衡注解:
@Bean
@LoadBalanced
public RestTemplate restTemplate (){
return new RestTemplate ();
} }

负载均衡策略修改 :

在启动类加上新的规则
@Bean
public IRule randomRule (){
return new RandomRule ();
}
在服务消费者【service-order】的application.yml配置文件中修改负载均衡策略:
## 需要调用的微服务名称
productservice :
ribbon :
NFLoadBalancerRuleClassName : com.netflix.loadbalancer.RandomRule
关于SpringCloud的中的Eureka使用方法,spring cloud,eureka,spring

最后附上数据库:

/*

 Navicat Premium Data Transfer

 Source Server         : localhost_3306

 Source Server Type    : MySQL

 Source Server Version : 80023

 Source Host           : localhost:3306

 Source Schema         : security

 Target Server Type    : MySQL

 Target Server Version : 80023

 File Encoding         : 65001

 Date: 07/01/2024 09:49:45

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for tb_permission

-- ----------------------------

DROP TABLE IF EXISTS `tb_permission`;

CREATE TABLE `tb_permission`  (

  `id` int NOT NULL AUTO_INCREMENT,

  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限名称',

  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求地址',

  `parent_id` int NULL DEFAULT NULL COMMENT '父权限主键',

  `type` varchar(24) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限类型,M-菜单。A-子菜单,U-普通请求',

  `permit` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限字符串描述,如user:list 用户查看权限',

  `remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '描述',

  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of tb_permission

-- ----------------------------

INSERT INTO `tb_permission` VALUES (1, '登录', '/login', 0, 'U', 'login:login', '登录权限');

INSERT INTO `tb_permission` VALUES (2, '进入登录页面', '/login', 0, 'U', 'login:tologin', '进入登录权限');

INSERT INTO `tb_permission` VALUES (3, '退出', '/logout', 0, 'U', 'logout', '退出权限');

INSERT INTO `tb_permission` VALUES (4, '注册', '/register', 0, 'U', 'reg:register', '注册权限');

INSERT INTO `tb_permission` VALUES (5, '进入注册页面', '/toRegister', 0, 'U', 'reg:toregister', '进入注册权限');

INSERT INTO `tb_permission` VALUES (6, '用户管理', '', 0, 'M', '用户:经理', '用户管理权限');

INSERT INTO `tb_permission` VALUES (7, '用户查询', '/user/list', 6, 'A', 'user:list', '用户查询权限');

INSERT INTO `tb_permission` VALUES (8, '用户新增', '/user/add', 6, 'U', 'user:add', '用户新增权限');

INSERT INTO `tb_permission` VALUES (9, '进入用户新增页面', '/user/toAdd', 6, 'U', 'user:toAdd', '进入用户新增页面权限');

INSERT INTO `tb_permission` VALUES (10, '用户修改', '/user/modify', 6, 'U', 'user:modify', '用户修改权限');

INSERT INTO `tb_permission` VALUES (11, '进入用户修改页面', '/user/tomodify', 6, 'U', 'user:toModify', '进入用户修改页面权限');

INSERT INTO `tb_permission` VALUES (12, '用户删除', '/user/remove', 6, 'U', 'user:remove', '用户删除权限');

-- ----------------------------

-- Table structure for tb_role

-- ----------------------------

DROP TABLE IF EXISTS `tb_role`;

CREATE TABLE `tb_role`  (

  `id` int NOT NULL AUTO_INCREMENT,

  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名称',

  `remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '角色描述',

  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of tb_role

-- ----------------------------

INSERT INTO `tb_role` VALUES (1, '超级管理员', '全部权限');

INSERT INTO `tb_role` VALUES (2, '普通用户', '基础权限');

-- ----------------------------

-- Table structure for tb_role_permission

-- ----------------------------

DROP TABLE IF EXISTS `tb_role_permission`;

CREATE TABLE `tb_role_permission`  (

  `role_id` int NULL DEFAULT NULL COMMENT '角色ID',

  `permission_id` int NULL DEFAULT NULL COMMENT '权限ID'

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of tb_role_permission

-- ----------------------------

INSERT INTO `tb_role_permission` VALUES (1, 1);

INSERT INTO `tb_role_permission` VALUES (1, 2);

INSERT INTO `tb_role_permission` VALUES (1, 3);

INSERT INTO `tb_role_permission` VALUES (1, 4);

INSERT INTO `tb_role_permission` VALUES (1, 5);

INSERT INTO `tb_role_permission` VALUES (1, 6);

INSERT INTO `tb_role_permission` VALUES (1, 7);

INSERT INTO `tb_role_permission` VALUES (1, 8);

INSERT INTO `tb_role_permission` VALUES (1, 9);

INSERT INTO `tb_role_permission` VALUES (1, 10);

INSERT INTO `tb_role_permission` VALUES (1, 11);

INSERT INTO `tb_role_permission` VALUES (1, 12);

INSERT INTO `tb_role_permission` VALUES (1, 13);

INSERT INTO `tb_role_permission` VALUES (2, 1);

INSERT INTO `tb_role_permission` VALUES (2, 2);

INSERT INTO `tb_role_permission` VALUES (2, 3);

INSERT INTO `tb_role_permission` VALUES (2, 4);

INSERT INTO `tb_role_permission` VALUES (2, 5);

INSERT INTO `tb_role_permission` VALUES (2, 6);

-- ----------------------------

-- Table structure for tb_user

-- ----------------------------

DROP TABLE IF EXISTS `tb_user`;

CREATE TABLE `tb_user`  (

  `id` int NOT NULL AUTO_INCREMENT,

  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',

  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',

  `password` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',

  `remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '描述',

  PRIMARY KEY (`id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of tb_user

-- ----------------------------

INSERT INTO `tb_user` VALUES (1, '超级管理员', 'admin', '123', '超级管理员');

INSERT INTO `tb_user` VALUES (2, '普通用户', 'guest', 'guest', '普通用户');

-- ----------------------------

-- Table structure for tb_user_role

-- ----------------------------

DROP TABLE IF EXISTS `tb_user_role`;

CREATE TABLE `tb_user_role`  (

  `user_id` int NULL DEFAULT NULL COMMENT '用户ID',

  `role_id` int NULL DEFAULT NULL COMMENT '角色ID'

) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------

-- Records of tb_user_role

-- ----------------------------

INSERT INTO `tb_user_role` VALUES (1, 1);

INSERT INTO `tb_user_role` VALUES (2, 2);

SET FOREIGN_KEY_CHECKS = 1;文章来源地址https://www.toymoban.com/news/detail-783975.html

到了这里,关于关于SpringCloud的中的Eureka使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Unity Physics.CheckBox的使用方法

    在UnityAPI手册中Physics.CheckBox是Unity Physics类中的一个方法,该方法拥有四个重载,用于检查给定的盒体是否与其他碰撞体重叠。 public static bool CheckBox (Vector3 center, Vector3 halfExtents, Quaternion orientation= Quaternion.identity, int layermask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteracti

    2024年01月21日
    浏览(38)
  • 关于java中PriorityQueue类的使用方法

    今天做了力扣的每日一题 ==》 2208. 将数组和减半的最少操作次数  起初我用数组这个死方法去做这个题,代码写出来了,不过在最后运行的时候超时了。看大佬的解答中,我发现了这个类,之前从来都没看到过,所以学习了一下,写这篇文章记一下。 目录 前言 一、Priori

    2024年02月15日
    浏览(33)
  • 关于Python中使用selenium八大定位方法

    1.通过id元素定位                             .find_element_by_id(\\\"id\\\") 2.通过name元素定位                       .find_element_by_name(\\\"name\\\")     3.通过路径导航定位                         .find_element_by_xpath(\\\"xpath\\\")          说明 :右键所选的网页元素,点击copy,点击copy ,x

    2023年04月23日
    浏览(52)
  • 微服务springcloud 02 创建项目中的三个service子系统,springcloud中注册中心Eureka介绍和把三个系统注册到Eureka中

    item service项目 01.使用springboot创建项目 02.选择依懒项 在这里插入代码片 spring web 03.添加sp01-commons依赖 在pom.xml文件中 04.修改application.yml ItemServiceImpl 05.创建接口实现类和controller类 ItemController 注:Spring MVC接受参数的几个注解,controller类中使用的参数注解 注解@GetMapping()=@

    2024年02月09日
    浏览(62)
  • 关于使用BETWEEN AND 使索引失效的解决方法

    由于业务需要,需要使用between and 查询数据, 在查询数据条数约占总条数五分之一以下时能够使用到索引,但超过五分之一时,则使用全表扫描了。速度极慢。 解决办法(联合索引+强制使用索引)

    2024年02月14日
    浏览(40)
  • 关于gitlab 使用用户名与密码登陆的方法

    首先设置access token 有了access token后,我们还需要在git中进行配置,这样才能go get下了私有仓库的包,需要把刚刚的token添加进git的请求头中,操作如下: git config --global http.extraheader \\\"PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN\\\" 配置git将请求从ssh转换为http env GIT_TERMINAL_PROMPT=1 go get -u chainmaker.

    2024年02月12日
    浏览(39)
  • 【python】关于openpyxl的基本使用方法-看这篇就够了

    目录 ​编辑 一、下载安装与引用 二、创建工作簿并写入数据 创建工作簿 创建工作表 写入数据 保存数据 三、读取表格并查找数据 读取表格 读取指定工作表 重命名指定工作表 获取单元格数据 四、其他操作  多个工作表之间的切换 处理行和列 格式化单元格 修改工作表标题

    2024年02月10日
    浏览(47)
  • 关于学习单片机keil uvision5的基本使用方法

    单片机是一门非常考验动手实践能力的科目,我们经常会使用到keil5(4也是一样的),而这个软件新手编写程序一般都是用的C语言,对新手小白非常地友好。我推荐大家可以去b站看江科大的单片机教学,讲的非常通俗易懂,我在大学的协会里就经常默默地看视频自学,希望大家

    2024年02月07日
    浏览(42)
  • 【SpringCloud】深入探究Eureka:构建微服务架构中的高效服务发现系统

    👨‍💻博主主页:小尘要自信 在现代的软件开发中,微服务架构已经成为了一个热门的话题。微服务架构的一个关键组成部分就是服务发现。而在服务发现领域,Eureka无疑是一个备受推崇的解决方案。本篇博客将为您介绍什么是Eureka以及如何在您的微服务架构中应用它。

    2024年02月14日
    浏览(41)
  • 关于解决使用kali无线网卡无法扫描到WiFi信号的方法

    1.插入能够渗透用的无线网卡(我的无线网卡是3071类型的,免驱)并在物理机上禁用它,使kali能够独享整个无线网卡(注:若在物理机上找不到无线网卡,则需要下载驱动精灵安装驱动或者更新本机的网卡驱动)   2.需要安装扫描WiFi用的必要的软件包,命令为:apt-get insta

    2024年02月11日
    浏览(104)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包