首页 > 其他分享 >Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比

Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比

时间:2025-01-14 13:28:58浏览次数:3  
标签:return description Spring 3.0 new Swagger public

先说结论:

        Swgger 3.0  与Swagger 2.0  区别很大,Swagger3.0用了最新的注释实现更强大的功能,同时使得代码更优雅。

        就个人而言,如果新项目推荐使用Swgger 3.0,对于工具而言新的一定比旧的好;对接于旧项目原有Swagger 2.0版本不变就不要变,因为它作为辅助功能能达到你的需求就可以了(当然我一再声明这只代表我的个人看法,欢迎留言讨论)。

一、Maven配置方面差异

Swagger 2.0

 <!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>

Swagger 3.0

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.3.0</version>
</dependency>

配置application.yml  或者application.properties

application.yml

spring:
    mvc:
        pathmatch:
            matching-strategy: ant_path_matcher

application.properties

spring.mvc.pathmatch.matching-strategy= ant_path_matcher

二、配置类区分

Swagger 2.0

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi(){
    	// 添加请求参数,我们这里把token作为请求头部参数传入后端
		ParameterBuilder parameterBuilder = new ParameterBuilder();  
//		List<Parameter> parameters = new ArrayList<Parameter>();
//		parameterBuilder
				.name("token").description("令牌")
//			.modelRef(new ModelRef("string")).parameterType("header").required(false).build();
//		parameters.add(parameterBuilder.build());
//		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
//				.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
//				.build().globalOperationParameters(parameters);
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo(){
//    	return new ApiInfoBuilder()
//    			.title("Kitty API Doc")
//    			.description("This is a restful api document of Kitty.")
//    			.version("1.0")
//    			.build();
        return new ApiInfoBuilder().build();
    }

}

Swagger 3.0

@Configuration
public class OpenAPIConfig {
    /**
     * 这个方法可以不配置会自动去扫描,但配置了更好,因为扫描有了目标性会更快
     * 这个方法是创建分组
     * @return
     */
    @Bean
    public GroupedOpenApi publicApi() {
        String[] paths = {"/**"};
        String[] packages = {"com.example.test.controller"};//扫描的路径
        return GroupedOpenApi.builder()
                .group("public")
                .pathsToMatch(paths)
                .packagesToScan(packages)
                .build();
    }
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("接口文档标题")
                        .description("SpringBoot3 集成 Swagger3接口文档")
                        .version("v1"))
                .externalDocs(new ExternalDocumentation()
                        .description("项目API文档")
                        .url("/"));
    }
}

三、常注解差异

Swagger2.0 与 Swagger 3.0 的注释对比
注解位置Swagger 2.0Swagger 3.0 
Controller 类@Api@Tag(name="接口名",description="接口描述")
Controller 方法@ApiOperation@Operation(summary =“接口方法描述”)
@ApilmplicitParams@Parameters
Controller 方法上 @Parameters 里@ApiImplicitParam@Parameter(description=“参数描述”)
Controller 方法的参数上@ApiParam@Parameter(description=“参数描述”)
@ApiIgnore@Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden
DTO类上@ApiModel@Schema
DTO属性上@ApiModelProperty

Swagger 2

        controller代码

        DTO

 

Swagger 3

        Controller代码

@RestController
@Tag(name = "TestController",description = "测试接口")
@RequestMapping(value = "/swaggertest")
public class TestController {

    @Operation(summary = "测试接口",description = "测试接口")
    @GetMapping(value = "/noHiddenApi")
    public String noHiddenApi(@Parameter(name = "id",description = "这个ID代表.......") Integer id){
        return "noHiddenApi";
    }
}

        DTO代码

@Schema(description = "用户实体类")
public class SysUser {
    @Schema(description = "用户id")
    private Integer id;
    @Schema(description = "用户名")
    private String username;
    @Schema(description = "密码")
    private String password;

}

后记

花了近一个小时的时间写这个文章,如果有问题请留言指正,确对您有帮助请点赞收藏,谢谢观看。

标签:return,description,Spring,3.0,new,Swagger,public
From: https://blog.csdn.net/weixin_44690195/article/details/145130265

相关文章

  • springboot662医院信管系统(论文+源码)_kaic
      摘要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,医院信管系统就是信息时代变革中的产物之一。任何系统都要遵循系统设计的......
  • springboot661学生成绩管理系统(论文+源码)_kaic
     摘要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,学生成绩管理系统就是信息时代变革中的产物之一。任何系统都要遵循系统设计......
  • springboot摄影跟拍预定管理系统(论文+源码)_kaic
     摘要首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设......
  • springboot664实习管理系统(论文+源码)_kaic
      摘要随着信息化时代的到来,管理系统都趋向于智能化、系统化,实习管理也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而实习管理系统能很好地解决这一问题,轻松应对实习管理平时的工作,既能提高人力物力财力,又能......
  • springboot使用阿里oss实现文件上传
    一、准备1.介绍阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商。云服务指的就是通过互联网对外提供的各种各样的服务,比如像:语音服务、短信服务、邮件服务、视频直播服务、文字识别服务、对象存储服务等等。当我们在项目开发时需要用到某个或某......
  • 基于Spring Boot实现的4S店管理系统
    一、系统背景与目的随着汽车市场的不断发展,4S店面临着日益激烈的竞争环境。为了提高运营效率、优化客户体验并增强市场竞争力,4S店需要一套高效、全面的管理系统来支持其日常运营。基于SpringBoot实现的4S店管理系统正是为了满足这一需求而开发的。二、技术架构该系统采......
  • 基于Spring Boot的大学生竞赛管理系统
    一、系统背景与意义随着教育体制的改革和信息技术的发展,大学生竞赛活动在高等教育中扮演着越来越重要的角色。然而,传统的竞赛管理方式存在诸多不足,如信息查询不便、管理效率低下、报名审核流程繁琐等。因此,开发一个基于SpringBoot的大学生竞赛管理系统具有重要意义。该系......
  • 深入解析 Spring AI 系列:解析OpenAI接口对接
    今天我们将主要探讨OpenAI是如何进行接口对接的,虽然我们不打算深入细节,但会对整体流程进行一个大概的了解。后续会逐步分析其中的具体细节,大家可以耐心等待,逐步展开。好的,现在让我们开始,下面是我简单绘制的一张图示,旨在帮助大家更好地理解接下来的分析流程。OpenAiApi我们第一......
  • 计算机毕业设计—311017 spring boot酒店预定系统(源码免费领)
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对酒店客房预定等问题,对酒店信息管理进行研究分析,然后开发设计出酒店预订系统以解决问题。......
  • 记一次springcloud gateway记录日志响应结果乱码问题
    前言最近团队的网关日志发现有不少响应结果记录,出现形如下的乱码�V*.I,IU�JK�)N�Q�M-.NL�^�m�?��(�钍/�,}�����]O7L|���ŲƧ�MϦnP�Q*K�)*�+���QJ-*�/r�O� ��{�@8���一开始感觉是不是中文乱码,但是后面发现有些日志不是中文,也是乱码,而有些记录的日志又能正常显示。于是搜索了一圈,在https://blog.csdn.net/......