springboot中swagger快速启动流程

 更新时间:2019年09月06日 11:51:47   作者:Purgeyao  
这篇文章主要介绍了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();
  }
}

3|0模块化-Starter

缘由

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

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

设计

  1. 创建模块swagger-spring-boot-starter。
  2. 功能大致如下:
  3. 加载SwaggerConfig。

通过配置化配置swagger。

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.factories把SwaggerConfig类装载到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 {

}

4|0使用

添加依赖

把自己编写好的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是否正常。

5|0总结

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

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

以上所述是小编给大家介绍的springboot中swagger快速启动流程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】

    Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】

    这篇文章主要介绍了Java实现的微信图片处理工具类,可实现针对图片的裁剪、合并、等比例缩放、旋转、识别等各种常见的图片处理功能,需要的朋友可以参考下
    2017-11-11
  • Java 中实现异步的多种方式

    Java 中实现异步的多种方式

    文章介绍了Java中实现异步处理的几种常见方式,每种方式都有其特点和适用场景,通过选择合适的异步处理方式,可以提高程序的性能和可维护性,感兴趣的朋友一起看看吧
    2025-03-03
  • sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite数据库的介绍与java操作sqlite的实例讲解

    今天小编就为大家分享一篇关于sqlite数据库的介绍与java操作sqlite的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Java中四种遍历List的方法总结(推荐)

    Java中四种遍历List的方法总结(推荐)

    下面小编就为大家带来一篇Java中四种遍历List的方法总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • java实现银行家算法

    java实现银行家算法

    这篇文章主要为大家详细介绍了java实现银行家算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Java实现图片转base64完整代码示例

    Java实现图片转base64完整代码示例

    这篇文章主要给大家介绍了关于Java实现图片转base64的相关资料,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法,需要的朋友可以参考下
    2023-12-12
  • Spring底层原理深入分析

    Spring底层原理深入分析

    Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能
    2022-07-07
  • java发送http get请求的两种方式

    java发送http get请求的两种方式

    这篇文章主要为大家详细介绍了java发送http get请求的两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Mybatis-Plus 自动填充失效问题解决

    Mybatis-Plus 自动填充失效问题解决

    在使用MyBatis-Plus时,自动填充功能可能会失效,这通常与版本和配置有关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • Spring Boot + FreeMarker 实现动态Word文档导出功能

    Spring Boot + FreeMarker 实现动态Word文档导出功能

    Spring Boot与FreeMarker的组合,为开发者提供了一个强大的平台,可以轻松实现动态Word文档的导出,本文将指导你如何使用Spring Boot与FreeMarker模板引擎,创建一个简单的应用,用于根据数据库数据动态生成Word文档并下载,感兴趣的朋友一起看看吧
    2024-06-06

最新评论