Spring Boot 二

API 文档构建工具 - Swagger2

由于 Spring Boot 能够快速开发、便捷部署等特性,通常在使用 Spring Boot 构建 Restful 接口应用时考虑到多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web 前端。对于不同的终端公用一套接口 API 时,对于联调测试的时候就需要知道后端提供的接口 API 列表文档,对于服务端开发人员来说就需要编写接口文档,描述接口的调用地址、参数结果等,这里借助第三方构建工具 Swagger2 来实现 API 文档生成功能。
环境整合配置
pom.xml 依赖添加
<dependency>
<groupId> io.springfox </groupId>
<artifactId> springfox-swagger2 </artifactId>
<version> 2.9.2 </version>
</dependency>
<dependency>
<groupId> io.springfox </groupId>
<artifactId> springfox-swagger-ui </artifactId>
<version> 2.9.2 </version>
</dependency>
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi () {
return new Docket ( DocumentationType . SWAGGER_2 )
. apiInfo ( apiInfo ())
. select ()
. apis ( RequestHandlerSelectors . basePackage ( "com.xxxx.springboot.controller" ))
. paths ( PathSelectors . any ())
. build ();
}
private ApiInfo apiInfo () {
return new ApiInfoBuilder ()
. title ( " 用户管理接口 API 文档 " )
. version ( "1.0" )
. build ();
}
}

Swagger2 常用注解说明
@Api
@Api :用在请求的类上,说明该类的作用
tags = " 说明该类的作用 "
@Api ( tags = "APP 用户注册 Controller" )
@ApiOperation
@ApiOperation " 用在请求的方法上,说明方法的作用 "
value = " 说明方法的作用 "
notes = " 方法的备注说明 "
@ApiOperation ( value = " 用户注册 " , notes = " 手机号、密码都是必填项,年龄是选填项,但必须是数字 " )
@ApiImplicitParams
@ApiImplicitParams :用在请求的方法上,包含一组参数说明
@ApiImplicitParam :用在 @ApiImplicitParams 注解中,指定一个请求参数的配置信息
name :参数名
value :参数的汉字说明、解释
required :参数是否必须传
paramType :参数放在哪个地方
· header --> 请求参数的获取: @RequestHeader
· query --> 请求参数的获取: @RequestParam
· path (用于 restful 接口) --> 请求参数的获取: @PathVariable
· body (不常用)
· form (不常用)
dataType :参数类型,默认 String ,其它值 dataType = "Integer"
defaultValue :参数的默认值
@ApiResponses
@ApiResponses :用于请求的方法上,表示一组响应
@ApiResponse :用在 @ApiResponses 中,一般用于表达一个错误的响应信息
code :数字,例如 400
message :信息,例如 " 请求参数没填好 "
response :抛出异常的类
@ApiOperation ( value = "select 请求 " , notes = " 多个参数,多种的查询参数类型 " )
@ApiResponses ({
@ApiResponse ( code = 400 , message = " 请求参数没填好 " ),
@ApiResponse ( code = 404 , message = " 请求路径没有或页面跳转路径不对 " )
})
@ApiModel
@ApiModel :用于响应类上,表示一个返回响应数据的信息
(这种一般用在 post 创建的时候,使用 @RequestBody 这样的场景,
请求参数无法使用 @ApiImplicitParam 注解进行描述的时候)
@ApiModelProperty :用在属性上,描述响应类的属性
@ApiModel ( description = " 返回响应数据 " )
public class RestMessage implements Serializable {
@ApiModelProperty ( value = " 是否成功 " )
private boolean success = true ;
@ApiModelProperty ( value = " 返回对象 " )
private Object data ;
@ApiModelProperty ( value = " 错误编号 " )
private Integer errCode ;
@ApiModelProperty ( value = " 错误信息 " )
private String message ;
/* getter/setter */
}

用户模块注解配置

Controller 使用注解
JavaBean 使用注解
Swagger2 接口文档访问
启动工程,浏览器访问 : http://localhost:8080/springboot_mybatis/swagger-ui.html

SpringBoot 应用热部署
什么是热部署?
热部署,就是在应用正在运行的时候升级软件(增加业务 / 修改 bug ),却不需要重新启动应用。
大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载。
而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的 ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前,Spring Boot 通过配置 DevTools工具来达到热部署效果。
在原理上是使用了两个 ClassLoader ,一个 ClassLoader 加载那些不会改变的类(第三方 Jar 包), 另一个ClassLoader 加载会更改的类,称为 restart ClassLoader ,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个 restart ClassLoader ,由于需要加载的类相比较少,所以实现了较快的重启时间。
热部署环境配置与测试
配置 DevTools 环境
修改 Pom 文件,添加 DevTools 依赖
<!-- DevTools 的坐标 -->
<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-devtools </artifactId>
<!-- 当前这个项目被继承之后,这个不向下传递 -->
<optional> true </optional>
</dependency>
同时在 plugin 中添加 devtools 生效标志
<plugin>
<groupId> org.springframework.boot </groupId>
<artifactId> spring-boot-maven-plugin </artifactId>
<configuration>
<fork> true </fork> <!-- 如果没有该配置,热部署的 devtools 不生效 -->
</configuration>
</plugin>
devtools 可以实现页面热部署(即页面修改后会立即生效,这个可以直接在 application.properties
文件中配置 spring.thymeleaf.cache=false 来实现),实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。即 devtools 会监听 classpath 下的文件变动,并且会立即重启应用 (发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的。配置了后在修改 java 文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空 session 中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。

全局配置文件配置
application.yml 中配置 spring.devtools.restart.enabled=false ,此时 restart 类加载器还会初始
化,但不会监视文件更新。
IDEA 配置
当我们修改了 Java 类后, IDEA 默认是不自动编译的,而 spring-boot-devtools 又是监测 classpath下的文件发生变化才会重启应用,所以需要设置 IDEA 的自动编译。
自动编译配置
File -> Settings -> Compiler -> Build Project automatically
Registry 属性修改
ctrl + shift + alt + / ,选择 Registry ,勾上 Compiler autoMake allow when app running

SpringBoot 单元测试
做过 web 项目开发的对于单元测试都并不陌生了,通过它能够快速检测业务代码功能的正确与否, SpringBoot 框架对单元测试也提供了良好的支持,来看 SpringBoot 应用中单元测试的使用。
Spring Cache 相关注解说明
SpringBoot 缓存实现内部使用 SpringCache 实现缓存控制,这里集成 Ehcache 实际上是对
SpringCache 抽象的其中一种实现,这里在使用 Ehcache 实现缓存控制时相关注解说明如下 :
@CacheConfig
用于标注在类上,可以存放该类中所有缓存的公有属性,比如设置缓存的名字。
@Cacheable
应用到读取数据的方法上,即可缓存的方法,如查找方法,先从缓存中读取,如果没有再调用相应方法获取数据,然后把数据添加到缓存中。
@CachePut
应用到写数据的方法上,如新增 / 修改方法,调用方法时会自动把相应的数据放入缓存, @CachePut 的参数与 @Cacheable 类似
@CacheEvict
应用到移除数据的方法上,如删除方法,调用方法时会从缓存中移除相应的数据,
@Caching
组合多个 Cache 注解使用。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值