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=文件名

相关推荐
晨曦中的暮雨5 小时前
Golang速通(Javaer版)
java·开发语言·后端·golang
七老板的blog5 小时前
当 Spring StateMachine 遇见大模型:构建工业级 AI 写作流水线
java·人工智能·spring
MartinYeung55 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen875 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
云烟成雨TD6 小时前
Spring AI 1.x 系列【46】MCP Security 模块
java·人工智能·spring
CRMEB系统商城6 小时前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php
sinat_255487816 小时前
第七部分。介绍MVC(模型-视图-控制器)模式
java·ide·http·tomcat·intellij-idea
李白的天不白6 小时前
ps -ef | grep java
java
ab_dg_dp6 小时前
Android 17+ 提取 AIDL 生成 Java 文件的实用脚本
android·java·python
超哥--6 小时前
B站视频内容智能分析系统(三):B站视频自动采集
java·开发语言·音视频·ai编程