vlambda博客
学习文章列表

云伴读—深入理解SpringCloud与微服务构建(二)




这本书目前在工作之余已经看到第五章了,前四章我感觉还不错,作者讲解很基础,但我认为还不够深入,还有很多可以挖掘的点。目前看来这本书还是很适合一些刚开始了解微服务或者对SpringBoot不太熟悉的人来看的。


我也是一个不断爬坑入坑的小程序猿,文章都是我自己的手打出来的,有一些错别字或者不足的地方,如果有些更好的想法和观点,欢迎大家留言指正,谢谢大家啦~





 SpringCloud简介


springcloud对比Dubbo在很多功能上要完善很多,比如有自己的配置管理中心(Config Servcer)和安全模块组件(Spring Cloud Security)。


Kubernetes让我看后,感觉是另一种的微服务实现方式,从容器编排上实现所有的微服务功能。


两者实现的角度和方式不同。SpringCloud是从Java类库来实现微服务的所有功能。


云伴读—深入理解SpringCloud与微服务构建(二)




构建微服务的准备


主要介绍了一些搭建微服务的准备,使用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操作来解决)


云伴读—深入理解SpringCloud与微服务构建(二)




开发框架 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的相关依赖。


云伴读—深入理解SpringCloud与微服务构建(二)




Actuator组件


Actuator是一个组件,因为开发者对于其程序的运行状态和程序中自动注入的Bean的类型会有很多不清楚的地方,通过引入该组件依赖,该组件能对程序状态进行监控,自身提供13个Api的get请求的方法,使得我们在项目运行的状态,就可进行一些状况监控,可以给开发者提供很多有用信息。


Spring Boot 项目的一些简单介绍,基础的注解用法和一些配置文件 .yml文件。(这些需要详细去SpringBoot官网或针对SpringBoot使用知识的相关书籍中学习,本书中介绍很少)


云伴读—深入理解SpringCloud与微服务构建(二)




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的一些东西,我在搭建一个新的项目的时候或者项目迁移的时候,大部分通过项目代码来进行数据库建表等操作。


云伴读—深入理解SpringCloud与微服务构建(二)




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