专栏首页Nicky's blogSpringBoot集成Swagger2

SpringBoot集成Swagger2

Swagger介绍

在一些接口项目中,API的使用很频繁,所以一款API在线文档生成和测试工具非常有必要。而Swagger UI就是这么一款很实用的在线工具 本博客介绍如何在公司或者自己的电脑上按照Swagger UI,本博客介绍一下怎么集成到SpringBoot项目中,Swagger可以安装在线使用,安装教程可以参考我之前的博客,安装在linux系统的,https://smilenicky.blog.csdn.net/article/details/70276327

SpringBoot集成Swagger2

然后介绍一下怎么集成到SpringBoot项目

maven加上配置

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

SpringBoot Application类:

package org.muses.jeeplatform;


import org.muses.jeeplatform.cache.RedisClient;
import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author caiyuyu
 */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class, MybatisAutoConfiguration.class})
@ServletComponentScan
@EnableScheduling
@EnableTransactionManagement
//@EnableCaching
@EnableAsync
@Controller
public class Application {

    @Autowired
    RedisClient redisClient;

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

    @RequestMapping("/set")
    public String set(String key, String value) throws Exception{
        redisClient.setValue(key, value);
        return "success";
    }

    @RequestMapping("/get")
    public String get(String key) throws Exception {
        return redisClient.getValue(key);
    }
//    @Bean
//    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
//        PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
//        c.setIgnoreUnresolvablePlaceholders(true);
//        return c;
//    }

}

新建一个配置类,记得加上主键@EnableSwagger2

package org.muses.jeeplatform.config;

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.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * <pre>
 *  Swagger2配置类
 * </pre>
 *
 * @author nicky
 * <pre>
 * 修改记录
 *    修改后版本: V1.0.1    修改人:  修改日期: 2019年05月12日  修改内容:
 * </pre>
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("org.muses.jeeplatform.web"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("Swagger2")
                .description("SpringBoot集成Swagger2构建RESTful API接口")
                .termsOfServiceUrl("https://smilenicky.blog.csdn.net")
                .contact("Nicky.Ma")
                .version("1.0.1")
                .build();
    }
}

可以对整个Controller进行注释

对接口注释,包括具体的传参

实体类:

package org.muses.jeeplatform.core;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * <pre>
 *  接口返回类
 * </pre>
 *
 * @author nicky
 * <pre>
 * 修改记录
 *    修改后版本:     修改人:  修改日期: 2019年05月12日  修改内容:
 * </pre>
 */

@Data
public class ResultVO<T> {

    @ApiModelProperty("状态码")
    private Integer status;
    @ApiModelProperty("返回信息")
    private String message;
    @ApiModelProperty("返回数据")
    private T data;

    public ResultVO(Integer status, String message){
        this.status = status;
        this.message = message;
    }

    public ResultVO(Integer status, String message, T data){
        this.status = status;
        this.message = message;
        this.data = data;
    }

    public static <T> ResultVO error(String message) {
        return new ResultVO(0, message, null);
    }

    public static <T> ResultVO error(String message,T data) {
        return new ResultVO(0, message, data);
    }

    public static <T> ResultVO successful(String message){
        return new ResultVO(1,message,null);
    }

    public static <T> ResultVO successful(String message, T data){
        return new ResultVO(1, message, data);
    }

}

所以工程就部署好了,访问

http://localhost:8080/${项目名称}/swagger-ui.html

可以看到接口的详情信息,Swagger2相当于一个在线文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mybatis+Thymeleaf前端显示时间格式问题解决方法

    我的开发工具是IntelliJ IDEA,然后在SpringBoot集成Mybatis,前端用模块引擎Thymeleaf的过程中遇到几个问题,不过也花了点时间,...

    SmileNicky
  • SpringBoot系列之异步任务@Async使用教程

    ps:不按照原文进行翻译,根据自己的实践,整合两篇博客,进行说明Springboot异步任务的使用,本博客可以作为异步任务的学习参考

    SmileNicky
  • SpringBoot系列之前后端接口安全技术JWT

    JWT的全称为Json Web Token (JWT),是目前最流行的跨域认证解决方案,是在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC ...

    SmileNicky
  • Spring Boot系列——7步集成RabbitMQ

    RabbitMQ是一种我们经常使用的消息中间件,通过RabbitMQ可以帮助我们实现异步、削峰的目的。

    JackieZheng
  • Java中使用线程时,请不要忘记Spring TaskExecutor组件

    当我们实现的web应用程序需要长时间运行一个任务时,Spring TaskExecutor管理组件是一个很好选择,会给我们代码的实现提供很大的方便,也会节省时间...

    用户1289394
  • rabbitMQ实现可靠消息投递 原

        RabbitMQ消息的可靠性主要包括两方面,一方面是通过实现消费的重试机制(通过@Retryable来实现重试,可以设置重试次数和重试频率,但是要保证幂...

    chinotan
  • Spring Cloud Hystrix - 服务容错

    在微服务架构中,由于某个服务的不可用导致一系列的服务崩溃,被称之为雪崩效应。所以防御服务的雪崩效应是必不可少的,在Spring Cloud中防雪崩的利器就是Hy...

    端碗吹水
  • Swagger2+springboot-mvc+hibernate-validator 可视化视图加参数校验

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite...

    用户5927264
  • Spring Cloud微服务技术栈(五):客户端负载均衡Spring Cloud Ribbon部分源码分析

    为了使客户端具备负载均衡的能力,我们在代码中将RestTemplate交给Spring管理的时候,会加上@LoadBalanced注解,如下代码所示:

    itlemon
  • 05Ribbon负载均衡服务调用

    http://localhost/consumer/payment/get/130

    Remember_Ray

扫码关注云+社区

领取腾讯云代金券