Spring Cloud 整合之 CRUD
Spring Cloud介绍
功能概述
实现微服务功能
Sping Cloud官网
Spring Cloud是基于Spring Boot的微服务系统架构的一站式解决方案,提供了快速构建分布式系统的一些工具如服务发现注册 、配置管理 、路由、消息总线 、负载均衡 、断路器 、数据监控、微代理、全局锁、决策竞选、分布式会话 等等
Spring Cloud和Dubbo
最大区别:Spring Cloud采用基于HTTP的REST方式,而Dubbo采用的是RPC通信
REST:是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。,并且参数都放在URL上。
RPC:RPC 框架是架构微服务化的首要基础组件 ,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,让调用方感觉就像调用本地函数一样调用远端函数;让服务提供方感觉就像实现一个本地函数一样来实现服务。
项目构建
这里我采用了三个模块来实现CRUD,分别是api模块提供对象,provider模块实现基本的CRUD,consumer模块来实现调用provider接
数据库的创建
CREATE DATABASE /*!32312 IF NOT EXISTS*/`db01`
USE `db01`;
/*Table structure for table `dept` */
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`deptno` bigint(20) NOT NULL AUTO_INCREMENT,
`dname` varchar(60) DEFAULT NULL,
`db_source` varchar(60) DEFAULT NULL,
PRIMARY KEY (`deptno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `dept` */
insert into `dept`(`deptno`,`dname`,`db_source`) values (1,'开发部','db01'),(2,'人事部','db01'),(3,'财务部','db01'),(4,'市场部','db01'),(5,'运维部','db01');
总依赖
<?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>
<groupId>com.lin</groupId>
<artifactId>springcloud</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>springcloud-api</module>
<module>springcloud-provider-dept-8001</module>
<module>springcloud-consumer-dept-80</module>
<module>springcloud-eureka-7001</module>
</modules>
<!--打包方式 pom-->
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.complier.target>1.8</maven.complier.target>
<!--版本管理-->
<junit.version>4.12</junit.version>
<log4j.version>1.2.17</log4j.version>
<lombok.version>1.18.12</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<!--springcloud的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--SpringBoot-->
<dependency>
<groupId>org.springframework.boot</groupId>