深入理解SpringCloud与微服务构建(读书有感)(二)
深入理解SpringCloud与微服务构建(读书有感)(二)
- 第二章 Spring Cloud 简介
- 第三章 构建微服务的准备
- 第四章 开发框架 Spring Boot
- Spring Boot简介
- 自动装配:
- 起步依赖:
- Actuator组件
- SpringBoot 整合JPA
- SpringBoot 整合Redis
- SpringBoot 整合Swagger2 搭建Restful API在线文档
第二章 Spring Cloud 简介
该书第二章节介绍 SpringCloud与Dubbo、Kubernetes的一些比较,总体上让我感觉,springcloud对比Dubbo在很多功上要完善很多,比如有自己的配置管理中心(Config Servcer),和安全模块组件(Spring Cloud Security)。Kubernetes让我看后,感觉是另一种的微服务实现方式,从容器编排上实现所有的微服务功能,两者实现的角度和方式不同。SpringCloud是从Java类库来实现微服务的所有功能。
第三章 构建微服务的准备
主要介绍了一些搭建微服务的准备,使用IDEA开发工具,配置Maven来管理构建项目。
Maven构建项目的生命周期(默认有23个阶段,这是Maven本身已经集成的插件。)
目前常用:
1.validate 验证工程的完整性
2.initialize 初始化
3.compile 编译
4.test 测试
5.package 打包(如 Jar、War)
6.verify 验证
7.install 安装到本地仓库
8.deploy 提交到远程仓库
9.clean 删除工程的target 目录下的所有文件。
除了用插件进行一键式处理,也可以用类似 mvn package 命令形式操作。
其中 package 操作 包上面 验证、编译代码、处理代码、生成资源文件、生成jar包、测试一系列操作。
install操作中包含 package所有过程,并将生成的jar包安装到本地仓库。(在分布式项目中,有时对个别项目做更改后,在依赖项目中无法找到新内容而报错的情况下,可以对更改的项目做install操作来解决)
第四章 开发框架 Spring Boot
Spring Boot简介 优势:简化配置,致力于快速开发。
特点:Spring Boot框架提供了自动装配和起步依赖。(也是其优势的体现)还有一个特点是Actuator对运行状态的监控。
早期的Spring开发需要引入大量的Xml文件,大量在文件中配置Bean。
自动装配: 我在项目感受就是,当你添加一个新的依赖后,你不需要对该依赖的操作bean有什么配置,在SpringBoot项目就会自动引入该依赖的默认配置bean。例如,引入了Fegin的依赖后,我们没有对其进行任何配置,在后续的操作中可能通过一个注解,就可对其进行调用。当然我们也可以后续对其进行配置,这样SpringBoot就不会对其引入默认的配置Bean了。
起步依赖: 在项目中就是依赖的选择了,在项目中对依赖的版本选择很关键,版本冲突很难处理。过去需要一个功能,比如spring MVC的功能可能需要引入很多包,spring-core、spring-web和spring-webmvc等。而现在使用Spring Boot的起步依赖只需要一个Spring-boot-starter-web的依赖,他会自动导入Spring Boot的相关依赖。
Actuator组件 Actuator是一个组件,因为开发者对于其程序的运行状态和程序中自动注入的Bean的类型会有很多不清楚的地方,通过引入该组件依赖,该组件是能对程序状态进行监控,该组件自身提供了13个Api的get请求的方法,使得我们在项目运行的状态,就可进行一些状况监控,可以给开发者提供很多有用信息。
Spring Boot 项目的一些简单介绍,基础的注解用法,和一些配置文件 .yml文件。(这些是需要详细去SpringBoot官网或者针对于SpringBoot使用知识的相关书籍中学习的,本书中介绍很少)
SpringBoot 整合JPA 数据库采用MySql,创建SpringBoot项目,添加JPA的起步依赖,Spring-Boot-starter-data-jpa,还有mysql数据库的链接依赖,mysql-connector-java。
相关配置:
在yml中配置数据源,spring.datasource 基础配置,spring.jpa 下配置相关jpa的配置。
spring.jpa.hibernate.all-auto : create (如果 为create时 ,项目启动后,根据代码的实体类在数据库中创建表,为update时 不会建表。)
spring.jpa.show-sql:true (显示sql)
JPA在代码中的相关注解:
@Entity 类上,声明该类是一个实体类,要和数据库表名相对应。
@Id 属性上,对应数据库的Id字段。
@GeneratedValue 注解配置Id字段自增长
@Column 表名该变量对应数据库的表字段
这一小章节讲的是springboot和JPA的基础整合,我之前一直用的是MyBtais和MyBatis-plus。基本上没用到过JPA的一些东西,不过他的介绍让我觉得,在搭建一个新的项目的时候或者项目迁移的时候,大部分通过项目代码来进行数据库建表等操作。
SpringBoot 整合Redis Redis是一个开源、先进的Key-Value存储系统。支持 数据结构有 字符串、哈希、列表、集合、有序集合、位图、超文本。
添加启动依赖 spring-boot-starter-data-redis
在yml中 spring.redis.下
host: redis服务的所在服务器 ip
port: 端口号
password : 密码
database : 指定redis数据库序号 (redis数据库默认有16个库 从0~15个序号)
pool:链接池
该启动类中 通过RedisTemplate来访问Redis的。(还提供了针对不同的数据结构操作的Bean,如:针对字符串类型的数据操作,需要注入StringRedisTemplate的Bean。)
通过template.opsForValue 来创建一个ValueOperations类,这个类中封装的有一些 set、get方法,来对Redis进行操作。
SpringBoot 整合Swagger2 搭建Restful API在线文档 添加依赖 springfox-swagger2 和 springfox-swagger-ui
在SpringBoot项目的启动类上添加@EnableSwagger2的注解来开启swagger2的功能。
【深入理解SpringCloud与微服务构建(读书有感)(二)】swagger的ui界面的生成同过项目中使用swagger的注解来构建的。
常用注解:
@Api : 在类上使用,常用语描述一个Controller类的功能(描述控制器的作用)
@ApiOperation : 常用于描述的方法,或者Controller中一个接口
@ApiParam : 接口中单个参数的描述
@ApiModel: 描述一个类,我常用于描述一个bean;
@ApiModelProperty : 描述一个类中的 属性含义
@ApiIgnore : 这个注解表示 Swagger2忽略这个API,就是在swagger-ui界面不展示
一般一个项目在引入了swagger依赖后,用了其一些注解后,并在启动类上添加@EnableSwagger2注解,通过http://localhost:9095/swagger-ui.html#/ 可以看到swagger-ui的可视化界面。
Restful API文档:是在Web层通过Get、Post、Put、Delete这4中Http方法,来构建Restful风格的接口。
总结:
这本书目前在工作之余已经看到第五章了,前四章给我的感觉还是不错的,作者讲解的很很基础,但是让我感觉不太深入,有很多可以挖掘的点,不过也有可能我过于着急,因为毕竟要由浅入深,但是讲的东西都能让大家所理解,目前看来这本书还是很适合一些刚开始了解微服务或者对SpringBoot不太熟悉的人来看的。至于上面的一些整合,也是最基本的讲解整合,有基础的查缺补漏,刚了解可以做下深入的探讨下。
我也是个不断爬坑入坑,不断学习进步的小程序猿,文章都是我根据自己的笔记手打出来的,肯定有一些错别字或者不足的地方,如果有些更好的想法和观点,或者一些不足麻烦留言指正谢谢大家啦
推荐阅读
- 深入理解Go之generate
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 由浅入深理解AOP
- 逻辑回归的理解与python示例
- 【1057快报】深入机关,走下田间,交通普法,共创文明
- 生发知识,带你深入了解
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- 不理解句意,你还想做对所有GRE填空题()
- 深入浅出谈一下有关分布式消息技术(Kafka)