技术标签: java SpringBoot
官方说明:
此版本的亮点:
兼容性说明:
注意:
应用主类增加注解@EnableOpenApi,删除之前版本的SwaggerConfig.java。
启动项目,访问地址:http://localhost:8080/swagger-ui/index.html
注意2.x版本中访问的地址的为http://localhost:8080/swagger-ui.html
Maven项目中引入springfox-boot-starter依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
application.yml配置
spring:
application:
name: springfox-swagger
server:
port: 8080
# ===== 自定义swagger配置 ===== #
swagger:
enable: true
application-name: ${
spring.application.name}
application-version: 1.0
application-description: springfox swagger 3.0整合Demo
try-host: http://localhost:${
server.port}
使用@EnableOpenApi注解,启用swagger配置
@EnableOpenApi
@Configuration
public class SwaggerConfiguration {
}
自定义swagger配置类SwaggerProperties
@Data
@Component
@ConfigurationProperties("swagger")
public class SwaggerProperties {
/**
* 是否开启swagger,生产环境一般关闭,所以这里定义一个变量
*/
private Boolean enable;
/**
* 项目应用名
*/
private String applicationName;
/**
* 项目版本信息
*/
private String applicationVersion;
/**
* 项目描述信息
*/
private String applicationDescription;
/**
* 接口调试地址
*/
private String tryHost;
}
一个完整详细的springfox swagger配置示例:
@EnableOpenApi
@Configuration
public class SwaggerConfiguration implements WebMvcConfigurer {
private final SwaggerProperties swaggerProperties;
public SwaggerConfiguration(SwaggerProperties swaggerProperties) {
this.swaggerProperties = swaggerProperties;
}
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30).pathMapping("/")
// 定义是否开启swagger,false为关闭,可以通过变量控制
.enable(swaggerProperties.getEnable())
// 将api的元信息设置为包含在json ResourceListing响应中。
.apiInfo(apiInfo())
// 接口调试地址
.host(swaggerProperties.getTryHost())
// 选择哪些接口作为swagger的doc发布
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
// 支持的通讯协议集合
.protocols(newHashSet("https", "http"))
// 授权信息设置,必要的header token等认证信息
.securitySchemes(securitySchemes())
// 授权信息全局应用
.securityContexts(securityContexts());
}
/**
* API 页面上半部分展示信息
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title(swaggerProperties.getApplicationName() + " Api Doc")
.description(swaggerProperties.getApplicationDescription())
.contact(new Contact("lighter", null, "[email protected]"))
.version("Application Version: " + swaggerProperties.getApplicationVersion() + ", Spring Boot Version: " + SpringBootVersion.getVersion())
.build();
}
/**
* 设置授权信息
*/
private List<SecurityScheme> securitySchemes() {
ApiKey apiKey = new ApiKey("BASE_TOKEN", "token", In.HEADER.toValue());
return Collections.singletonList(apiKey);
}
/**
* 授权信息全局应用
*/
private List<SecurityContext> securityContexts() {
return Collections.singletonList(
SecurityContext.builder()
.securityReferences(Collections.singletonList(new SecurityReference("BASE_TOKEN", new AuthorizationScope[]{
new AuthorizationScope("global", "")})))
.build()
);
}
@SafeVarargs
private final <T> Set<T> newHashSet(T... ts) {
if (ts.length > 0) {
return new LinkedHashSet<>(Arrays.asList(ts));
}
return null;
}
/**
* 通用拦截器排除swagger设置,所有拦截器都会自动加swagger相关的资源排除信息
*/
@SuppressWarnings("unchecked")
@Override
public void addInterceptors(InterceptorRegistry registry) {
try {
Field registrationsField = FieldUtils.getField(InterceptorRegistry.class, "registrations", true);
List<InterceptorRegistration> registrations = (List<InterceptorRegistration>) ReflectionUtils.getField(registrationsField, registry);
if (registrations != null) {
for (InterceptorRegistration interceptorRegistration : registrations) {
interceptorRegistration
.excludePathPatterns("/swagger**/**")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/v3/**")
.excludePathPatterns("/doc.html");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
一些常用注解说明
项目Demo:springfox-swagger
参考
在 Spring Boot 项目中使用 Swagger 文档
Springfox 3.0.0(包含springfox-swagger2-3.0.0)即OpenAPI 3的发布与系统集成
笔记为复制方便自用 笔记原地址
文章浏览阅读572次。 Jenkins介绍和安装及配合GitLab代码自动部署https://www.cnblogs.com/xiewenming/p/7490828.html 一,安装docker-ce版本1.1 删除之前版本的Dockersudo yum remove docker docker-common docker-selinux docker-engine1.2 安装一些依赖..._jkens安装gitlab
文章浏览阅读1.8k次。题目:从键盘输入一个大写字母,要求改用小写字母输出。输入 A输出 a分析思路:主要考虑ASII码值的相互转化a: 对应ASII值为:97A: 对应ASII值为:65大小写之间相差32方法1代码:#include <iostream>#include <algorithm>using namespace std;const int n=2;int main(){char A[n];cin>>A;char B[n];_从键盘输入一个大写字母,要求改用小写字母输出,fun函数
文章浏览阅读3.7k次。一 拿到板子,查看jetpack版本head -n 1 /etc/nv_tegra_release二 安装anaconda替代品,miniforge提示:个人感觉miniforge用起来和anaconda没什么区别NVIDIA Jetson Xavier使用的aarch64架构是没法使用anaconda的,虽然可以自己编译,但是conda指令是没法编译到aarch64架构上运行的。不过有替代品,名字是miniforge。miniforge与miniconda的区..._jetson agx xavier安装h5py
文章浏览阅读460次。工业改革以来,国家一直致力于工业制造的不断发展,所以不管是“工业4.0”还是“智能制造2025”都是智慧工厂实现高效生产、传统转型的目标,为了更好的完成传统工业向智能化工业的迈进,UWB无论是从定位精度、安全性、抗干扰、功耗等多种技术来分析,无疑是目前最理想的智慧工厂人员定位技术之一。UWB定位面临哪些企业管理难点1.企业安全信息管理由于企业性质,考虑到员工生产安全、商业保密和工作效率,解决员工进入工作区域因禁止携带手机导致的调度及通信难题;2.企业人员、车辆来往管控难点对于大型企业几百甚至几千_uwb融合差分定位技术 厂区边界
文章浏览阅读2.8k次。mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产环境下并不适用。但为了学习和了解RAID原理和管理,因此仍然进行一个详细的讲解:一、创建模式选项:-C专用选项:-l 级别-n 设备个数-a {yes|no} ..._md1482.x叫0
文章浏览阅读4w次,点赞20次,收藏35次。将数据库的数据导出为CSV文件,之后用excel打开,出现了乱码情况,真心无奈,感觉都要理转文了!╮(╯﹏╰)╭原因:CSV是用UTF-8编码的,而EXCEL是ANSI编码,由于编码方式不一致导致出现乱码。解决办法:用记事本打开CSV文件----->文件------>另存为------>点编码------>选择ANSI----->保存,然后用excel打开就不会..._csv文件输入是乱码
文章浏览阅读708次。DescriptionBessie the cow is trying to type a balanced string of parentheses into her new laptop, but she is sufficiently clumsy (due to her large hooves) that she keeps mis-typing characters. P_[usaco2012 nov]笨牛
文章浏览阅读665次,点赞15次,收藏17次。向ICTLED 2024提交的所有全文都可以用英语书写,并将发送给至少两名评审员,并根据原创性、技术或研究内容或深度、正确性、与会议的相关性、贡献和可读性进行评估。ICTLED 2024所有被接受的论文将在会议记录中发表,并提交给Scopus、EI Compendex、CPCI、CNKI、Google Scholar进行索引。的科研学者、技术人员及相关人员提供一个共享科研成果和前沿技术,了解学术发展趋势,拓宽研究思路,加强学术研究和探讨,促进学术成果产业化合作的平台。拒稿),越早投稿越早收到文章结果。
文章浏览阅读5k次。Shaocheng.LiToggle main menu visibility首页关于MQTT 协议和 mosquitto2015-08-11 Network 12792MQTT 介绍Mosquitto安全性3.1. SSL/TLS3.2. WebSockets with SSL/TLSlibmosquitto 库4.1. 获取库版本4.2. 初始化和清除4.3..._mqtt怎么对接硬件
文章浏览阅读1.5k次。 在拼多多店铺上面上架商品,那肯定也需要了解到底维持多少的数量合适。那么拼多多店铺商品数量多少合适?越多越好吗?下面店盈通给大家讲述一下。 1、输入账号名,点击保存,选择已配置的店铺,或者在开始页面配置店铺。 2、输入商品地址,可以同时输入不同的拼多多商品地址。 3、填写需要填写的相关信息。 4、选中要上传的商品,点击上传商品。如果有传错了可以点击删除商品。 5、上传成功后,您可以在上传的页面中找到您上传的商品,或者您可以点击删除商品选项,选择要删除的商品。 ._拼多多一户能做几个产品吗?
文章浏览阅读1.3k次。为了解决 HTTP/1.0 存在的资源浪费的问题, HTTP/1.1 优化为默认长连接模式。_curl断点续传
文章浏览阅读102次。何为成长?成长是指自我提升,一方面是本身的个人能力,另一方面是社会对你的认可度。最终,程序员的职位和薪水都能在成长中得以体现。很多人对成长有误解,在他们眼中,随着工作年限的提高,成长是理所当然的事情,这其实是一个误区。两个程序员同时工作3年,难道他们两个的成长就完全一样吗?其实是不一样的。很多岗位在招聘的时候都要求3年以上工作经验,这个3年工作经验是指持续成长的三年,而不是指浑浑噩噩混日子的三年。下面举个通俗易懂的例子,大家一定能理解。面试经历1.偶然看到知乎的内推帖,投了个简历,下午hr姐姐ca._apk分析的试题