云伴读—深入理解SpringCloud与微服务构建
Posted Pu博利客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云伴读—深入理解SpringCloud与微服务构建相关的知识,希望对你有一定的参考价值。
这本书目前在工作之余已经看到第五章了,前四章我感觉还不错,作者讲解很基础,但我认为还不够深入,还有很多可以挖掘的点。目前看来这本书还是很适合一些刚开始了解微服务或者对SpringBoot不太熟悉的人来看的。
我也是一个不断爬坑入坑的小程序猿,文章都是我自己的手打出来的,有一些错别字或者不足的地方,如果有些更好的想法和观点,欢迎大家留言指正,谢谢大家啦~
SpringCloud简介
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
SpringBoot的优势是简化了配置,致力于快速开发;并且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的功能。
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风格的接口。
往期文章请点击此处↓↓↓
创作:祥天啊
编辑:爱吃橘子西瓜
未经同意禁止转载!
合作请联系:wang61021229
以上是关于云伴读—深入理解SpringCloud与微服务构建的主要内容,如果未能解决你的问题,请参考以下文章