购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 SpringCloud和SpringBoot的区别

SpringBoot其设计目的是简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式进行配置,从而使开发人员不再需要定义样板化的配置。

在使用Spring Boot之前,我们需要搭建一个项目框架并配置各种第三方库的依赖,还需要在XML中配置很多内容。

Spring Boot 完全打破了我们之前的使用习惯,一分钟就可以创建一个Web开发的项目;通过 Starter 的方式轻松集成第三方的框架;去掉了XML的配置,全部用注解代替。

Spring Boot Starter 是用来简化jar包依赖的,集成一个框架只需要引入一个Starter,然后在属性文件中配置一些值,整个集成的过程就结束了。

1. Spring Cloud与Spring Boot的区别

●SpringBoot专注于快捷地方便开发单个个体微服务

●SpringCloud是关注全局的微服务协调整、治理框架

●SpringCloud 将Spring Boot开发的一个一个单体的微服务整合起来,从而给各个微服务之间提供(配置管理、服务发现、熔断器、路由、微代理、事件总线、全局锁、分布式会话等集成服务)。SpringBoot可以离开SpringCloud独立地进行开发项目,反之SpringCloud是离不开SpringBoot,是依赖的关系。

2. 创建父工程

使用Maven创建父级工程,注意jdk版本选择 1.8+(包含 1.8),maven版本 3.5+(包含3.5),并删除父工程的其他无用的文件如(src、idea),留下pom.xml文件即可,如图 1.8 所示。

图 1.8

在父工程的pom文件配置坐标,统一管理jar包版本。

dependencyManagement描述:只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

如上述,pom文件中坐标描述。

●spring-cloud-dependencies:SpringCloud核心坐标

●mysql-connector-java:数据库驱动坐标

●druid:数据库连接池坐标

●mybatis-spring-boot-starter:mybatis的核心坐标

●junit:test测试坐标

●log4j:日志坐标

●lombok:自动生成get set方法

创建订单模块工程:选择父工程右击,创建订单模块工程如图 1.9 所示。

图 1.9

在模块工程cloud-provider-payment-8001 编写pom文件,代码如下所示。

如上述,pom文件中坐标描述如下所示:

●spring-boot-starter-web:web组件

●spring-boot-starter-actuator:actuator装配组件

●mybatis-spring-boot-starter:mybatis组件

●druid-spring-boot-starter:druid连接池组件

●mysql-connector-java:mysql数据库组件

●spring-boot-starter-jdbc:jdbc连接组件

●lombok:生成get set方法组件

●spring-boot-starter-test:test测试组件

配置application.yml文件,配置上对应的端口,服务名称,数据库的连接,mybaits的扫描,代码如下所示。

application.yml文件配置描述:

●server.port:指定对应的端口

●spring.application.name:指定服务名称

●spring.datasource.type:连接池的类型

●spring.datasource.driver-class-name:数据库驱动

●spring.datasource.url:链接地址

●spring.datasource.username:用户名

●spring.datasource.pass:密码

●mybatis.mapperLocations:扫描Mybatis的配置文件

●mybatis.type-aliases-package:扫描实体类

创建一个主启动类,并编写SpringBoot的入口,代码如下所示。

创建数据库表,SQL代码如下所示。

表字段描述:

●id 主键

●serial名称描述

实体类的编写:编写一个与数据库表字段映射的实体类,代码如下所示。

实体类注解描述:

●@Data 生成get set方法

●@AllArgsConstructor 生成全参数构造函数

●@NoArgsConstructor 生成无参数构造函数

编写封装json数据的实体类,代码如下所示。

实体类字段描述:

●id 主键

●serial名称描述

●T返回数据的类型

编写dao接口,并创建create添加方法,getPaymentById查询数据方法,代码如下所示。

mapper.xml映射数据库字段,并编写查询与添加的SQL语句,代码如下所示。

编写Servcie并引入PaymentDao对象在create方法中调用添加的方法,getPaymentById方法中调用查询的方法,代码如下所示。

编写Controller,并引入PaymentService对象,在create方法中调用=paymentSer vice.create添加方法,getPaymentById方法中调用payme ntService.get Pay mentById方法,代码如下所示。

测试查询:

在postman上测试执行http://localhost:8001/payment/getPaymentById/31,如图 1.10 所示。

图 1.10

在postman上测试执行http://localhost:8001/payment/create?serial=测试数据信息,如图 1.11 所示。

图 1.10

消费者订单模块:

选择父工程右击,创建消费者订单模块如图 1.12 所示。

图 1.11

进行配置POM.xml文件:

如上述,pom文件中坐标描述如下所示:

●spring-boot-starter-web web组件

●spring-boot-starter-actuator actuator装配组件

●mysql-connector-java mysql数据库组件

●lombok生成get set方法组件

●spring-boot-starter-test test测试组件

配置yml文件:

application.yml文件中进行配置端口,代码如下所示。

主启动类:

实体类的编写,编写一个与数据库表字段映射的实体类,代码如下所示。

实体类注解描述:

●@Data 生成get set方法

●@AllArgsConstructor 生成全参数构造函数

●@NoArgsConstructor 生成无参数构造函数

编写封装json数据的实体类,代码如下所示。

实体类字段描述:

●id 主键

●serial 名称描述

●T 返回数据的类型

创建config配置类,并在Spring中注入RestTemplate Bean对象,代码如下所示。

创建控制层类,定义一个成员变量PAYMENT_URL,用于调用 8001 接口请求地址,并引入RestTemplate对象。在create方法中调用restTemplate.postForObject并指定 8001 模块中的添加请求地址,在getPaymentById方法中调用restTempla te.get ForObject并指定 8001 模块中的查询请求地址,代码如下所示。

测试:

启动cloud-provider-payment-8001 与cloud-consumer-order80 工程,通过 80模块工程,调用 8001 模块工程。在浏览器上执行http://localhost/consumer/payment/getPaymentById/31 地址,如图1.13所示。

图 1.12

再次执行http://localhost/consumer/payment/create?serial=服务调用,如图1.14 所示。

图 1.13

总结

本章讲解了微服务是什么,微服务的优秀缺点,还描述了比较主流的微服务解决方案并进行了分析。Spring Cloud为Java环境中解决微服务问题提供了非常完整的方案,所以在最近几年时间,Spring Cloud成了很多公司首选的技术方案。但是随着运用规模的扩大,Spring Cloud在服务治理领域的局限性逐步显露出来。相对来说,在服务治理方面,Dubbo有着非常大的优势,并且在Spring Cloud出现之前,它就已经被很多公司作为服务治理及微服务基础设施的首选框架。Dubbo Spring Cloud的出现,使得Dubbo既能够完全整合到Spring Cloud的技术线中,享受Spring Cloud生态中的技术支持和标准化输出,又能够弥补Spring Cloud中服务治理这方面的短板。Dubbo Spring Cloud是Spring Cloud Alibaba的核心组件,它构建在原生的SpringCloud标准之上,不仅覆盖了Spring Cloud原生特性,还提供了更加稳定和成熟的实现。

作业

1. 描述什么是微服务?

2. 描述微服务处理了什么事情?

3. Dubbo 与SpringCloud的区别?

4. 微服务处理的方案是什么? CtEYX71npoYlKZt6QVb4e04Ty2Ii4k5MPlUTO9zr0AZt1TRhIvOT8aUPEoeYdcij

点击中间区域
呼出菜单
上一章
目录
下一章
×