springboot之swagger快速启动

springboot之swagger快速启动

简介

介绍

可能大家都有用过swagger,可以通过ui页面显示接口信息,快速和前端进行联调。

没有接触的小伙伴可以参考官网文章进行了解下demo页面

多应用

当然在单个应用大家可以配置SwaggerConfig类加载下buildDocket,就可以快速构建好swagger了。

代码大致如下:

/**
 * Swagger2配置类
 * 在与spring boot集成时,放在与Application.java同级的目录下。
 * 通过@Configuration注解,让Spring来加载该类配置。
 * 再通过@EnableSwagger2注解来启用Swagger2。
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    /**
     * 创建API应用
     * apiInfo() 增加API相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
     * 本例采用指定扫描的包路径来定义指定要建立API的目录。
     *
     * @return
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.swaggerTest.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
     * 访问地址:http://项目实际地址/swagger-ui.html
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("更多请关注http://www.baidu.com")
                .termsOfServiceUrl("http://www.baidu.com")
                .contact("sunf")
                .version("1.0")
                .build();
    }
}

模块化-Starter

缘由

有开发过微服务的小伙伴应该体会过。当微服务模块多的情况下,每个模块都需要配置这样的一个类进行加载swagger。造成每个模块都存在大致一样的SwaggerConfig,极端的情况下,有些朋友复制其他模块的SwaggerConfig进行改造之后,发现仍然加载不出swagger的情况,造成明明是复制的,为何还加载不出,排查此bug及其费时间。

在此之上,可以构建出一个swagger-starter模块,只需要引用一个jar,加载一些特殊的配置,就可以快速的使用到swagger的部分功能了。

设计

创建模块swagger-spring-boot-starter
功能大致如下:

  1. 加载SwaggerConfig。
  2. 通过配置化配置swagger。
  3. Enable加载注解。

1. 创建SwaggerConfig

SwaggerConfig和之前的一致,只是里面的配置需要外部化。

@Configuration
@PropertySource(value = "classpath:swagger.properties", ignoreResourceNotFound = true, encoding = "UTF-8")
@EnableConfigurationProperties(SwaggerProperties.class)
public class SwaggerConfig {

  @Resource
  private SwaggerProperties swaggerProperties;

  @Bean
  public Docket buildDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(buildApiInf())
        .select()
        .apis(RequestHandlerSelectors.basePackage(""))
        .paths(PathSelectors.any())
        .build();
  }

  private ApiInfo buildApiInf() {
    return new ApiInfoBuilder()
        .title(swaggerProperties.getTitle())
        .description(swaggerProperties.getDescription())
        .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl())
        .contact(new Contact("skyworth", swaggerProperties.getTermsOfServiceUrl(), ""))
        .version(swaggerProperties.getVersion())
        .build();
  }
}

2. 创建SwaggerProperties 配置相关

配置通过@PropertySource注解加载resources目录下的swagger.properties

创建SwaggerProperties配置类,这个类里包含了一般swagger初始化要使用的一些常用的属性,如扫描包路径、title等等。

@Data
@ToString
@ConfigurationProperties(SwaggerProperties.PREFIX)
public class SwaggerProperties {

  public static final String PREFIX = "swagger";

  /**
   * 文档扫描包路径
   */
  private String basePackage = "";

  /**
   * title 如: 用户模块系统接口详情
   */
  private String title = "深兰云平台系统接口详情";

  /**
   * 服务文件介绍
   */
  private String description = "在线文档";

  /**
   * 服务条款网址
   */
  private String termsOfServiceUrl = "https://www.deepblueai.com/";

  /**
   * 版本
   */
  private String version = "V1.0";

}

做好这两件事情基本大工搞成了,为了更好的使用配置,在idea里和官方starter包一样,我们还需要配置一个additional-spring-configuration-metadata.json,让我们自己的配置也具有提示的功能,具体介绍请产考:配置提示 配置提示 配置提示 配置提示 配置提示 ...

3. 加载SwaggerConfig等特性

因为是starter模块,可能他人的项目目录和starter模块的目录不一致,导致加载不到SwaggerConfig类,我们需要使用spring.factoriesSwaggerConfig类装载到spring容器。

resources/META-INF

org.springframework.boot.autoconfigure.EnableAutoConfiguration=  io.purge.swagger.SwaggerConfig

当然本次基于Enable方式去加载SwaggerConfig

创建@EnableSwaggerPlugins注解类,使用@Import(SwaggerConfig.class)SwaggerConfig导入大工搞成。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import(SwaggerConfig.class)
@EnableSwagger2
public @interface EnableSwaggerPlugins {

}

使用

添加依赖

把自己编写好的swagger通过maven打包,自己项目引用。

<dependency>
  <groupId>com.purge.swagger</groupId>
  <artifactId>swagger-spring-boot-starter<factId>
  <version>0.1.0.RELEASE</version>
</dependency>

配置swagger.properties文件

  • 在自己项目模块的resources目录下 创建swagger.properties配置
  • swagger.properties 大致配置如下
swagger.basePackage="swagger扫描项目包路径"
swagger.title="swagger网页显示标题"
swagger.description="swagger网页显示介绍"

启动类添加@EnableSwaggerPlugins注解。

@EnableSwaggerPlugins
@SpringBootApplication
public class FrontDemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(FrontDemoApplication.class, args);
  }

}

访问http://ip:端口/swagger-ui.html检查swagger-ui是否正常。

总结

简单的starter代码编写可以减少新模块的复杂性,只需要简单的配置就可以使用相应的特性,减少复制代码不必要的错误。

示例代码地址: swagger-spring-boot

原文地址:https://www.cnblogs.com/Purgeyao/p/11473935.html

时间: 2024-11-05 20:40:28

springboot之swagger快速启动的相关文章

【SpringBoot】2.快速搭建一个SpringBoot应用

上一篇博客我们介绍了SpringBoot的概念,这里我们通过快速搭建一个SpringBoot应用来体验SpringBoot的特色. 1.创建工程首先我们打开MyEclipse,创建一个Maven工程:然后选择创建模式,这里我们选择不需要骨架:最后填写项目相关参数:项目创建之后工程目录如下:pom.xml文件中有一些错误,我们先去配置它,在POM文件中添加SpringBoot的依赖,配置如下: [html] view plain copy <project xmlns="http://mav

六、springboot整合swagger

六.springboot整合swagger 简介 swagger 提供最强大,最易用的工具,以充分利用OpenAPI规范. 官网 : https://swagger.io/ 准备工作 pom.xml jar引入: <swagger.version>2.9.2</swagger.version> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swag

SpringBoot 集成 Swagger

Swagger官网 什么是Swagger Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现 Swagger 文件可以在许多不同的平台上从代码注释中自动生成 Swagger 有一个强大的社区 依赖导入 <!-- Swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId&

SpringBoot+SpringMVC+MyBatis快速整合搭建

使用过SpringBoot的同学都知道,SpringBoot的pom.xml中的坐标都是按功能导入的,jar包之间的依赖SpringBoot底层已经帮我们做好了,例如我们要整合SprngMVC,只需要导入SpringMVC的起步依赖就可以了,SpringBoot会帮我们导入Spring和SpringMVC整合需要的jar包. SpringBoot是基于Spring4.0设计的,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程.另外Sp

转:springboot 与swagger整合出现Unable to infer base url.This is common when using dynamic的解决办法

原文链接:https://blog.csdn.net/miachen520/article/details/95718639 今天在springboot与swagger整合测试的时候跳出如下所示界面 经查资料发现有两种解决办法, 1.直接把@EnableSwagger2注解加在主启动类就可以,这样虽然能解决问题,但是这样会扫到使用的框架的接口, 这种方法要慎用. 2.主启动类加上@ComponentScan("swagger配置类所在包"),以保证配置类被扫描到 最后解决问题之后就可以

win8.1快速启动选项突然消失了怎么办?

win8开始提供的快速启动功能是一种混合式的休眠模式,Windows系统 在关机时将系统的信息保存到硬盘上的一个文件中来实现下一次的快速启动.当再次启动电脑时, Windows 使用该系统信息文件来恢复您的电脑,而不是重新启动系统 ,但是部分用户在电源选项处却发现没有快速启动的项目,快速启动消失了怎么办呢 1.打开控制面板-系统和安全-电源选项-选择电源按钮的功能,可看见此窗口并没有快速启动的选项 2.这是休眠功能被关闭了导致快速启动无法使用,开启休眠功能是快速启动的前提,左下角windows图

如何快速启动Apache

用视窗键+R键命令,启动电脑的"运行"选框后,输cmd启动'命令提示框'. 输入Apache在电脑存放的位置后,依次输入以下命令: httpd.exe -k install -n apache net start spache 后将启动Apache. 如图: 如何快速启动Apache,布布扣,bubuko.com

Mac App 最好的快速启动及切换工具:Manico 2.0

本文标签: Mac效率工具 Mac小工具 Manico2.0 MacApp快速启动 MacApp切换工具 在 OS X 下,我们想要启动或切换应用时,通常有以下三个选择: 对于常用应用,将鼠标光标移动到屏幕下方打开 Dock 栏,从中选择需要启动或切换的应用打开: 对于已经启动的应用,按下「CMD + Tab」呼出切换器,按 Tab 键或使用鼠标选择需要切换的应用打开: 对于既没有放在 Dock 栏也没有启动的应用,可以通过 Launchpad 或 Spotlight 搜索应用打开. 对于习惯使

通过ctrl+r快速启动程序

步骤1:在[我的电脑]右键-[系统属性]-[环境变量]中增加如图1设置并保存 步骤2:在图2中添加步骤1中增加的变量名并保存 步骤3:在ctrl+r的运行窗口中输入步骤1中的变量名即可快速启动程序 图1 图2 图3 来自为知笔记(Wiz)