SpringBoot学习日记——DAY02(SpringBoot整合Swagger3)

今天针对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=文件名

相关推荐
MartinYeung54 小时前
[论文学习]MiCA:比LoRA和全参数微调学到更多知识
深度学习·学习·机器学习
橘子海全栈攻城狮4 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring
smartvxworks4 小时前
Linux 实时内核(Linux Real-Time Kernel)详解:原理、实践与优化
java·linux·服务器
qizayaoshuap4 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos
AC赳赳老秦4 小时前
OpenClaw 采集任务日志审计:全程记录采集行为,满足合规溯源与企业审计要求
java·大数据·python·数据挖掘·数据分析·php·openclaw
浮江雾5 小时前
Flutter第十节-----Flutter布局与组件全解析
android·开发语言·前端·学习·flutter·入门
风起洛阳@不良使5 小时前
spring中xml和注解开发的对比
xml·java·spring
Tenifs5 小时前
关闭 IDEA 的英文单词拼写检查
java·intellij-idea
captain3765 小时前
创建多线程程序
java·java-ee
野蛮人6号5 小时前
黑马天机学堂Day01-08.搭建项目环境-本地开发部署方式——不知道nacos的密码是什么
java·spring cloud·黑马程序员·天机学堂·黑马天机学堂