今天针对SpringBoot整合Swagger3等相关操作展开了学习:
1.配置Swagger
1.1加入依赖
XML
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
1.2编写Swagger的配置类
java
package com.djw.config;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/**
* @author djw
*/
@Configuration
public class SwaggerConfig {
@Bean
public Docket apiConfig() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("董济维的项目")
.description("这是一个项目...")
.contact(new Contact("董济维","http://www.itszb.com","1918431841@qq.com"))
.version("1.0")
.build();
}
}
1.3编写application.yml
java
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
banner:
image:
location: banner.txt
server:
port: 9999
1.4在主类中加入注解EnableOpenApi
java
package com.djw;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableOpenApi
public class AppServer {
public static void main(String[] args) {
SpringApplication.run(AppServer.class, args);
}
}
1.5在Controller类中加入注解@Api(tags="对当前Controller类的说明"),在Controller方法加入注解@ApiOperation(value="对方法的说明和用途")
还可以使用ApiImlicitParam对方法的参数做说明,也可以利用ApiParam对参数做说明
java
package com.djw.controller;
import com.djw.model.Student;
import io.swagger.annotations.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author djw
*/
@RestController
@RequestMapping("/stu")
@Api(tags = "学生管理")
public class StuController {
@GetMapping("list")
@ApiOperation("查询全部学生数据")
public Object list(){
List<Student> list = new ArrayList<Student>();
list.add(new Student(1,"张三",22,"男"));
list.add(new Student(2,"李四",21,"男"));
list.add(new Student(3,"王五",23,"女"));
list.add(new Student(4,"赵六",22,"男"));
return list;
}
@GetMapping("select/{id}")
@ApiOperation("根据id获取学生对象")
@ApiImplicitParams(
@ApiImplicitParam(
name = "id",value = "学生id",required = true,
paramType = "path",dataType = "Integer",
dataTypeClass = Integer.class
)
)
public Object getById(@PathVariable Integer id){
return new Student(id,"李四",22,"男");
}
@PostMapping()
@ApiOperation("添加学生操作")
public Object save(@RequestBody @ApiParam(name="student",value="学生对象") Student student){
return student;
}
@DeleteMapping("/{id}")
@ApiOperation("新的删除学生操作")
public Object delete(@PathVariable Integer id){
return "已删除id为"+id+"的学生";
}
@PutMapping()
@ApiOperation("新的新的更新学生信息")
public Object update(@RequestBody Student student){
return student;
}
}
1.6在实体类上加入@ApiModel,@ApiModelProperty
java
package com.djw.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author djw
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value ="学生对象",description = "学生对象,用来对应数据库表student")
public class Student {
@ApiModelProperty(value = "学生id",required = true,example = "1")
private int id;
@ApiModelProperty(value = "名字",required = true,example = "张三")
private String name;
@ApiModelProperty(value = "年龄",required = true,example = "22")
private int age;
@ApiModelProperty(value = "男",required = true,example = "男")
private String gender;
}
1.7测试Swagger

2.设置自动重启
2.1加入依赖
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
2.2
2.3
配置好了就重启服务器,就可以实现修改功能springboot自启动了
2.4自动启动的原理
SpringBoot自启动技术主要通过两个类的加载器来完成。ClassLoader不会更改的类(来自第三方的jar包)被加载到Base ClassLoader中会更改的类被加载到Restart ClassLoader
2.5排除自动重启资源
可以在application.yml文件中配置排除资源
XML
spring :
devtools:
restart :
exclude: static/**,public/**,templates/**
3.SpringBoot配置文件位置

配置程序实参,--spring.config.name=文件名