SpringCloud的入门概述以及如何进行Rest微服务案例构建
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章给大家分享的是有关SpringCloud的入门概述以及如何进行Rest微服务案例构建,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧
千家信息网最后更新 2026年11月04日SpringCloud的入门概述以及如何进行Rest微服务案例构建
本篇文章给大家分享的是有关SpringCloud的入门概述以及如何进行Rest微服务案例构建,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
SpringCloud
一、SpringCloud入门概述
1、什么是微服务 提倡将单一的应用程序划分成一组组小的服务。每个服务运行在其独立的自己的进程中。服务间互相协调、互相配合。 服务之间采用轻量级的通讯机制互相沟通(dubbo是RPC、SpringCloud是基于HTTP的restful api)。 每个服务都围绕着具体的业务进行构建,都能部署到独立的生产环境中。 (根据业务拆分成一个个的服务,彻底的去耦合)2、微服务的优缺点是什么?以及在项目开发中碰到的坑 优点: 每一个服务专注聚焦于一个指定的业务功能和需求 松解耦的 各服务间可以用不同的语言 前后端分离 灵活搭配的数据库:自己的数据库+统一的公共数据库 缺点: 服务间通讯成本增加 数据一致性 运维难度增加等3、微服务的技术栈有哪些 服务开发 springboot、spring、springmvc等 服务配置与管理 Netflix公司的Archaius、阿里的Diamond 服务注册与发现 Eureka、Consul、zookeeper 服务调用 Rest、RPC、gRPC 服务熔断器 Hystrix(dashboard服务监控)、Envoy 负载均衡 Ribbon、Nginx 服务接口调用 Feign 消息队列 kafka、RabbitMq、ActiveMq 服务配置中心管理 SpringCloudConfig、Chef 服务路由 Zuul 服务监控 Zabbix、Nagios、Metrics、Spectator 全链路追踪 Zipkin、Brave、Dapper 服务部署 Docker、Openstack、Kubernetes 数据流操作开发包 SpringCloud Stream(封装与Redis\Rabbit\kafka等发送接收消息) 事件消息总线 SpringCloud Bus4、springcloud和dubbo有哪些区别 Dubbo SpringCloud 注册中心 zookeeper Eureka 调用方式 RPC REST API 服务监控 Dubbo-monitor SpringBoot Admin 断路器 ------- Hystrix 服务网管 Zuul 分布式配置 SpringCloud config 服务跟踪 SpringCloud Sleuth 消息总线 SpringCloud Bus 数据流 SpringCloud stream 批量任务 SpringCloud Task 。。。。 。。。。。。。 。。。。。。。dubbo服务治理
官网
https://spring.io/projects/spring-cloudhttps://springcloud.cc 中文社区https://springcloud.cn 中文官网
二、Rest微服务构建案例工程
以Dept部门模块做一个微服务通用案例、Consumer消费者[client]通过rest调用Provider提供的服务
结构
cloud: cloud-api 封装整体entity、接口和 公共配置等 cloud-provider-dept-8001 微服务的服务提供者 cloud-consumer-dept-80 微服务的服务消费者
1、父工程
new maven project
groupID com.leeartifact id cloudpackaging pom
POM
4.0.0 com.lee cloud 1.0-SNAPSHOT pom UTF-8 1.8 1.8 4.12 1.2.17 1.16.18 org.springframework.cloud spring-cloud-dependencies Dalston.SR1 pom import org.springframework.boot spring-boot-dependencies 1.5.9.RELEASE pom import mysql mysql-connector-java 5.0.4 com.alibaba druid 1.0.31 org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.0 ch.qos.logback logback-core 1.2.3 junit junit ${junit.version} test log4j log4j ${log4j.version}
2、cloud-api公共子模块
new maven module
moduleName cloud-apiparentProject cloudgroupId com.leeartifactId cloud-apipackaging jar
创建完成后 父工程POM文件会多了个
POM
cloud com.lee 1.0-SNAPSHOT 4.0.0 cloud-api org.projectlombok lombok
Entity
[ 微服务,一定要实现序列化 ]
package com.lee.cloud.entity;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;import lombok.experimental.Accessors;import java.io.Serializable;@Data@ToString@Accessors(chain = true)@NoArgsConstructorpublic class Dept implements Serializable { private static final long serialVersionUID = 5051248965243297270L; private Long deptno; //主键 private String dname; //部门名称 private String db_source;//来自那个数据库,因为微服务架构可以一个服务对应一个数据库,同一个信息被存储到不同数据库 public Dept(String dname) { this.dname = dname; }}3、cloud-provider-dept-8001生产者
部门微服务提供者
new maven module
moduleName cloud--provider-dept-8001parentProject cloudgroupId com.leeartifactId cloud--provider-dept-8001packaging jar
POM
cloud com.lee 1.0-SNAPSHOT 4.0.0 cloud--provider-dept-8001 com.lee cloud-api ${project.version} junit junit mysql mysql-connector-java com.alibaba druid ch.qos.logback logback-core org.mybatis.spring.boot mybatis-spring-boot-starter org.springframework.boot spring-boot-starter-jetty org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test org.springframework springloaded org.springframework.boot spring-boot-devtools true
application.yml
server: port: 8001mybatis: config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文件所在路径 type-aliases-package: com.lee.cloud.entity # 所有Entity别名类所在包 mapper-locations: - classpath:mybatis/mapper/**/*.xml # mapper映射文件spring: application: name: cloud-dept datasource: type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包 url: jdbc:mysql://localhost:3306/cloudDB01 # 数据库名称 username: root password: 123456 dbcp2: min-idle: 5 # 数据库连接池的最小维持连接数 initial-size: 5 # 初始化连接数 max-total: 5 # 最大连接数 max-wait-millis: 200 # 等待连接获取的最大超时时间
mybatis.cfg.xml
mysql
DROP DATABASE IF EXISTS cloudDB01;CREATE DATABASE cloudDB01 CHARACTER SET UTF8;USE cloudDB01;CREATE TABLE dept( deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, dname VARCHAR(60), db_source VARCHAR(60)); INSERT INTO dept(dname,db_source) VALUES('开发部',DATABASE());INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE());INSERT INTO dept(dname,db_source) VALUES('财务部',DATABASE());INSERT INTO dept(dname,db_source) VALUES('市场部',DATABASE());INSERT INTO dept(dname,db_source) VALUES('运维部',DATABASE()); SELECT * FROM dept;接口:dao\mapper\service\controller\
DAO:package com.lee.cloud.dao;import com.lee.cloud.entity.Dept;import org.apache.ibatis.annotations.Mapper;import java.util.List;/** * springboot整合mybatis * 第一种方法:在dao上加@Mapper * 第二种方法:在启动类上加@MapperScan */@Mapperpublic interface DeptDao { public boolean addDept(Dept dept); public Dept findById(Long id); public List findAll();}------------------------------------------------------------MAPPER INSERT INTO dept(dname,db_source) VALUES(#{dname},DATABASE()); ---------------------------------------------------------------------- SERVICE package com.lee.cloud.service;import com.lee.cloud.entity.Dept;import java.util.List;public interface DeptService { public boolean add(Dept dept); public Dept get(Long id); public List list();}-------------------------------------------------------------------------- SERVICE IMPL package com.lee.cloud.service.impl;import com.lee.cloud.dao.DeptDao;import com.lee.cloud.entity.Dept;import com.lee.cloud.service.DeptService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class DeptServiceImpl implements DeptService { @Autowired private DeptDao dao ; @Override public boolean add(Dept dept) { return dao.addDept(dept); } @Override public Dept get(Long id) { return dao.findById(id); } @Override public List list() { return dao.findAll(); }}----------------------------------------------------------------------CONTROLLER package com.lee.cloud.controller;import com.lee.cloud.entity.Dept;import com.lee.cloud.service.DeptService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestControllerpublic class DeptController { @Autowired private DeptService service; @RequestMapping(value="/dept/add",method= RequestMethod.POST) public boolean add(@RequestBody Dept dept) { return service.add(dept); } @RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET) public Dept get(@PathVariable("id") Long id) { return service.get(id); } @RequestMapping(value="/dept/list",method=RequestMethod.GET) public List list() { return service.list(); }} 主启动类APP
package com.lee.cloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DeptProvider8001_APP { public static void main(String[] args) { SpringApplication.run(DeptProvider8001_APP.class,args); }}测试:
http://localhost:8001/dept/list结果:[{"deptno":1,"dname":"开发部","db_source":"clouddb01"},{"deptno":2,"dname":"人事部","db_source":"clouddb01"},{"deptno":3,"dname":"财务部","db_source":"clouddb01"},{"deptno":4,"dname":"市场部","db_source":"clouddb01"},{"deptno":5,"dname":"运维部","db_source":"clouddb01"}]3、cloud-consumer-dept-80 消费者
部门微服务消费者
new maven module
moduleName cloud--consumer-dept-80parentProject cloudgroupId com.leeartifactId cloud--consumer-dept-80packaging jar
POM
cloud com.lee 1.0-SNAPSHOT 4.0.0 cloud-consumer-dept-80 部门微服务消费者 com.lee cloud-api ${project.version} org.springframework.boot spring-boot-starter-web org.springframework springloaded org.springframework.boot spring-boot-devtools
APPLICATION.YML
server: port: 80
configBean配置类
package com.lee.cloud.cfgbean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;//配置类@Configurationpublic class ConfigBean { //RestTemplate提供了多种便捷访问远程HTTP服务的方法 //是一种简单便捷的访问restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集 //类似JDBCTemplate RedisTemplate等 @Bean public RestTemplate restTemplate(){ return new RestTemplate(); }}RestTemplate提供了多种便捷访问远程HTTP服务的方法
是一种简单便捷的访问restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集
类似JDBCTemplate RedisTemplate等
controller
package com.lee.cloud.controller;import com.lee.cloud.entity.Dept;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;import java.util.List;@RestControllerpublic class DeptController_Consumer { private static final String REST_URL_PREFIX = "http://localhost:8001"; @Autowired private RestTemplate restTemplate; @RequestMapping(value="/consumer/dept/add") public boolean add(Dept dept) { return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, Boolean.class); } @RequestMapping(value="/consumer/dept/get/{id}") public Dept get(@PathVariable("id") Long id) { return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Dept.class); } @RequestMapping(value="/consumer/dept/list") public List list() { return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class); }} 启动类:
package com.lee.cloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DeptConsumer80_App { public static void main(String[] args) { SpringApplication.run(DeptConsumer80_App.class,args); }}测试:
1、启动provider服务,再启动consumer服务2、http://localhost/consumer/dept/list3、http://localhost/consumer/dept/get/14、http://localhost/consumer/dept/add?dname=风控部
以上就是SpringCloud的入门概述以及如何进行Rest微服务案例构建,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
服务
数据
数据库
配置
消费者
部门
开发
消费
案例
便捷
方法
模板
消息
业务
工程
接口
文件
监控
不同
人事
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
华服互联网科技靠谱吗
为想互联网科技怎么样
互联网的科技
猪兼强互联网科技
互联网 科技创业
迪茉互联网科技
苏州大垚互联网科技
移动互联网科技股
重庆威客帮互联网科技
互联网和黑科技的看法
湖北码尼互联网科技有限公司电话
昭通互联网科技选哪家
昊天互联网科技有限公司
青岛科技大学互联网大赛研究生
广州新华互联网科技学校电竞方面
锡山区互联网智能科技产品供应
广东工业互联网大赛深圳学泰科技
盐城市攀科互联网科技有限公司
株洲百竞科技的互联网营销顾问
互联网与科技
互联网是第几次科技革命的成果
互联网科技博主是什么意思
成都互联网科技公司100强
晓花互联网科技有限公司网址
开一家科技互联网公司需要多少钱
青海科技产业互联网发展
陕西云淼互联网科技公司
互联网金融运营模式中的金融科技
如何强化互联网金融科技