《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
而在 Swagger3 中,我们不需要再引入两个不同的依赖了,我们只需要引入一个依赖就足够,具体引入的依赖如下:
io.springfox
springfox-boot-starter
3.0.0
而这部分,Swagger2 和 Swagger3 就有所不同了,Swagger2 需要添加两项不同依赖,而 Swagger3 只用添加一项依赖就可以了。
构建 Swagger 配置类
为了统一管理 Swagger,这里还是推荐给 Swagger3 添加一个配置类。当然这里也可以根据自己的需求,可要可不要,但总体来说还是建议配置。
另外,在之前集成 Swagger2 的文章中,忘记了给大家说一点。平常在工作中,Swagger 的使用仅限于在开发环境,而在生产环境中,我们是要将其移除的。这里为了灵活管理,推荐大家在项目配置文件 application.yml
中添加关于 Swagger 开关的配置,比如这里我添加的配置如下,true
则代表开启 Swagger,false
则表示关闭 Swagger。
swagger:
enabled: true
配置完成之后,我们就需要在 Swagger 配置类中获取 Swagger 开关的值了,关于具体用法就可以看下边配置代码。
package com.cunyu.springbootswagger3demo.config;
import org.springframework.beans.factory.annotation.Value;
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.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.ArrayList;
/**
-
Created with IntelliJ IDEA.
-
@author : 村雨遥
-
@version : 1.0
-
@project : springboot-swagger3-demo
-
@package : com.cunyu.springbootswagger3demo.config
-
@className : SwaggerConfig
-
@createTime : 2022/1/6 14:19
-
@email : 747731461@qq.com
-
@微信 : cunyu1024
-
@公众号 : 村雨遥
-
@网站 : https://cunyu1943.github.io
-
@description :
*/
@Configuration
@EnableOpenApi
public class SwaggerConfig {
/**
- 用于读取配置文件 application.properties 中 swagger 属性是否开启
*/
@Value(“${swagger.enabled}”)
Boolean swaggerEnabled;
@Bean
public Docket docket() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
// 是否开启swagger
.enable(swaggerEnabled)
.select()
// 过滤条件,扫描指定路径下的文件
.apis(RequestHandlerSelectors.basePackage(“com.cunyu.springbootswagger3demo.controller”))
// 指定路径处理,PathSelectors.any()代表不过滤任何路径
//.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
/作者信息/
Contact contact = new Contact(“村雨遥”, “https://cunyu1943.github.io”, “747731461@qq.com”);
return new ApiInfo(
“Spring Boot 集成 Swagger3 测试”,
“Spring Boot 集成 Swagger3 测试接口文档”,
“v1.0”,
“https://cunyu1943.github.io”,
contact,
“Apache 2.0”,
“http://www.apache.org/licenses/LICENSE-2.0”,
new ArrayList()
);
}
}
这里的配置和 Swagger2 大同小异,这里最大的区别在于加入了从配置文件中获取 Swagger 开关的属性。这里也可以选择添加到 Swagger2 的配置类中,同样通过配置文件来控制是否开启 Swagger2。此外,还有就是 DocumentationType
属性的不同了,Swagger2 中我们使用的是 SWAGGER_2
,而在 Swagger3 中,我们使用的则是 OAS_30
。其实点进去 DocumentationType
的源码我们就可以发现,Swagger 已经是给我们定义好的,你用的是哪一个版本的 Swagger,那我们使用的属性值应该选择对应版本。三个版本的属性值对应如下:
public static final DocumentationType SWAGGER_12 = new DocumentationType(“swagger”, “1.2”);
public static final DocumentationType SWAGGER_2 = new DocumentationType(“swagger”, “2.0”);
public static final DocumentationType OAS_30 = new DocumentationType(“openApi”, “3.0”);
编写实体类
完成上面的步骤之后,我们的 Swagger 就配置好了,接下来我们就添加一个接口来看看 Swagger3 和 Swagger2 的不同。
- 新建实体类
这里我以一个用户类为实例,带有 name
、age
两个属性,也就是本文一开始项目结构截图中 entity
包下的内容。
package com.cunyu.springbootswagger3demo.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
-
Created with IntelliJ IDEA.
-
@author : 村雨遥
-
@version : 1.0
-
@project : springboot-swagger3-demo
-
@package : com.cunyu.springbootswagger3demo.entity
-
@className : User
-
@createTime : 2022/1/6 11:17
-
@email : 747731461@qq.com
-
@微信 : cunyu1024
-
@公众号 : 村雨遥
-
@网站 : https://cunyu1943.github.io
-
@description :
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(“用户实体类”)
public class User {
@ApiModelProperty(value = “姓名”, required = true, example = “村雨遥”)
private String name;
@ApiModelProperty(value = “年龄”, required = true, example = “20”)
private Integer age;
}
- 新建接口
这里写了两个接口,一个是直接传参,另一种是通过利用创建的 User
实体类来传输,也就是项目结构中 controller
包中的内容。
package com.cunyu.springbootswagger3demo.controller;
import com.cunyu.springbootswagger3demo.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
-
Created with IntelliJ IDEA.
-
@author : 村雨遥
-
@version : 1.0
-
@project : springboot-swagger3-demo
-
@package : com.cunyu.springbootswagger3demo.controller
-
@className : UserController
-
@createTime : 2022/1/6 11:02
-
@email : 747731461@qq.com
-
@微信 : cunyu1024
-
@公众号 : 村雨遥
-
@网站 : https://cunyu1943.github.io
-
@description :
*/
@Api(tags = “测试”)
@RestController
@RequestMapping(“/user”)
public class UserController {
@ApiOperation(“测试接口1”)
@PostMapping(“/show1”)
public String show1(@ApiParam(value = “姓名”, required = true, example = “村雨遥”) @RequestBody String name) {
return “hello,” + name + “,welcome to springboot swagger3!”;
}
@ApiOperation(“测试接口2”)
@PostMapping(“/show2”)
public String show2(@ApiParam(value = “用户对象”, required = true) @RequestBody User user) {
return “hello,” + user.getName() + “,welcome to springboot swagger3!”;
}
}
查看并测试接口
启动我们的项目,然后在浏览器中访问如下地址,就可以访问项目的接口文档了。
http://localhost:8080/swagger-ui/index.html
总结
我个人认为,如果你想靠着背面试题来获得心仪的offer,用癞蛤蟆想吃天鹅肉形容完全不过分。想必大家能感受到面试越来越难,想找到心仪的工作也是越来越难,高薪工作羡慕不来,却又对自己目前的薪资不太满意,工作几年甚至连一个应届生的薪资都比不上,终究是错付了,错付了自己没有去提升技术。
这些面试题分享给大家的目的,其实是希望大家通过大厂面试题分析自己的技术栈,给自己梳理一个更加明确的学习方向,当你准备好去面试大厂,你心里有底,大概知道面试官会问多广,多深,避免面试的时候一问三不知。
大家可以把Java基础,JVM,并发编程,MySQL,Redis,Spring,Spring cloud等等做一个知识总结以及延伸,再去进行操作,不然光记是学不会的,这里我也提供一些脑图分享给大家:
希望你看完这篇文章后,不要犹豫,抓紧学习,复习知识,准备在明年的金三银四拿到心仪的offer,加油,打工人!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
大厂面试题分析自己的技术栈,给自己梳理一个更加明确的学习方向,当你准备好去面试大厂,你心里有底,大概知道面试官会问多广,多深,避免面试的时候一问三不知。
大家可以把Java基础,JVM,并发编程,MySQL,Redis,Spring,Spring cloud等等做一个知识总结以及延伸,再去进行操作,不然光记是学不会的,这里我也提供一些脑图分享给大家:
[外链图片转存中…(img-E2M2Ug5L-1714746909259)]
[外链图片转存中…(img-gfRwf8Km-1714746909260)]
[外链图片转存中…(img-RXHIeV3J-1714746909260)]
希望你看完这篇文章后,不要犹豫,抓紧学习,复习知识,准备在明年的金三银四拿到心仪的offer,加油,打工人!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!