SpringBoot整合Swagger框架過(guò)程解析
Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。
總體目標(biāo)是使客戶(hù)端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許 API 來(lái)始終保持同步。Swagger 讓部署管理和使用功能強(qiáng)大的 API 從未如此簡(jiǎn)單。
引入maven依賴(lài)
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
創(chuàng)建配置類(lèi)
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
/**
* @author yvioo。
*/
@Configuration
@EnableSwagger2 //開(kāi)啟Swagger2
public class SwaggerConfig {
/**
* 配置Swagger的Docket的bean實(shí)例
* @return
*/
@Bean
public Docket docket(Environment environment) {
//設(shè)置只在開(kāi)發(fā)中環(huán)境中啟動(dòng)swagger
Profiles profiles=Profiles.of("dev");
//表示如果現(xiàn)在是dev環(huán)境,則返回true 開(kāi)啟swagger
boolean flag=environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否啟動(dòng)swagger 默認(rèn)啟動(dòng)
.enable(flag)
//所在分組
.groupName("yvioo")
.select()
//指定掃描的包路徑
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
//指定掃描的請(qǐng)求,這里表示掃描 /hello/ 的請(qǐng)求
//.paths(PathSelectors.ant("/hello/**"))
.build();
}
/**
* 配置ApiInfo信息
* @return
*/
private ApiInfo apiInfo() {
//作者信息
Contact author = new Contact("yvioo", "https://www.cnblogs.com/pxblog/", "111@qq.com");
return new ApiInfo(
"Swagger測(cè)試",
"Swagger描述",
"1.0",
"urn:tos",
author,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
);
}
}
測(cè)試用戶(hù)實(shí)體類(lèi)
User.java
package com.example.demo.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("用戶(hù)實(shí)體類(lèi) User") //增加實(shí)體類(lèi)接口注釋
@Data //使用Lombok插件自動(dòng)生成get set方法,這樣才能在swagger中顯示屬性值
public class User {
@ApiModelProperty("用戶(hù)ID") //增加字段接口注釋
private Integer id;
@ApiModelProperty("用戶(hù)名")
private String username;
}
測(cè)試控制器
SwaggerController.java
package com.example.demo.controller;
import com.example.demo.entity.User;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SwaggerController {
@GetMapping("/hello")
public String hello(){
return "hello";
}
/**
* 接口返回值含有實(shí)體類(lèi),就會(huì)被swagger掃描
*
* @return
*/
@ApiOperation("查詢(xún)用戶(hù)方法注釋")
@GetMapping(value = "/get/{id}")
public User get(@ApiParam("請(qǐng)求參數(shù)注釋") @PathVariable(value = "id")Integer id){
return new User();
}
}
使用dev環(huán)境 啟動(dòng)項(xiàng)目后 瀏覽器打開(kāi)http://localhost:8081/swagger-ui.html#/ 我這里用的端口是8081
顯示效果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot自動(dòng)裝配TypeNotPresentExceptionProxy異常排查解決
這篇文章主要為大家介紹了springboot自動(dòng)裝配TypeNotPresentExceptionProxy異常排查解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Spring Boot定時(shí)器創(chuàng)建及使用解析
這篇文章主要介紹了Spring Boot定時(shí)器創(chuàng)建及使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
使用WebUploader實(shí)現(xiàn)分片斷點(diǎn)上傳文件功能(二)
這篇文章主要為大家詳細(xì)介紹了使用WebUploader實(shí)現(xiàn)分片斷點(diǎn)上傳文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
springBoot+dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)應(yīng)用的項(xiàng)目實(shí)踐
本文主要介紹了springBoot+dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)應(yīng)用的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Java簡(jiǎn)易抽獎(jiǎng)系統(tǒng)小項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易抽獎(jiǎng)系統(tǒng)小項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
java連接MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了java連接MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-06-06

