springboot中swagger快速啟動(dòng)流程
介紹
可能大家都有用過(guò)swagger,可以通過(guò)ui頁(yè)面顯示接口信息,快速和前端進(jìn)行聯(lián)調(diào)。
沒(méi)有接觸的小伙伴可以參考官網(wǎng)文章進(jìn)行了解下demo頁(yè)面。
多應(yīng)用
當(dāng)然在單個(gè)應(yīng)用大家可以配置SwaggerConfig類加載下buildDocket,就可以快速構(gòu)建好swagger了。
代碼大致如下:
/**
* Swagger2配置類
* 在與spring boot集成時(shí),放在與Application.java同級(jí)的目錄下。
* 通過(guò)@Configuration注解,讓Spring來(lái)加載該類配置。
* 再通過(guò)@EnableSwagger2注解來(lái)啟用Swagger2。
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* 創(chuàng)建API應(yīng)用
* apiInfo() 增加API相關(guān)信息
* 通過(guò)select()函數(shù)返回一個(gè)ApiSelectorBuilder實(shí)例,用來(lái)控制哪些接口暴露給Swagger來(lái)展現(xiàn),
* 本例采用指定掃描的包路徑來(lái)定義指定要建立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();
}
/**
* 創(chuàng)建該API的基本信息(這些基本信息會(huì)展現(xiàn)在文檔頁(yè)面中)
* 訪問(wèn)地址:http://項(xiàng)目實(shí)際地址/swagger-ui.html
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot中使用Swagger2構(gòu)建RESTful APIs")
.description("更多請(qǐng)關(guān)注http://www.baidu.com")
.termsOfServiceUrl("http://www.baidu.com")
.contact("sunf")
.version("1.0")
.build();
}
}
3|0模塊化-Starter
緣由
有開(kāi)發(fā)過(guò)微服務(wù)的小伙伴應(yīng)該體會(huì)過(guò)。當(dāng)微服務(wù)模塊多的情況下,每個(gè)模塊都需要配置這樣的一個(gè)類進(jìn)行加載swagger。造成每個(gè)模塊都存在大致一樣的SwaggerConfig,極端的情況下,有些朋友復(fù)制其他模塊的SwaggerConfig進(jìn)行改造之后,發(fā)現(xiàn)仍然加載不出swagger的情況,造成明明是復(fù)制的,為何還加載不出,排查此bug及其費(fèi)時(shí)間。
在此之上,可以構(gòu)建出一個(gè)swagger-starter模塊,只需要引用一個(gè)jar,加載一些特殊的配置,就可以快速的使用到swagger的部分功能了。
設(shè)計(jì)
- 創(chuàng)建模塊swagger-spring-boot-starter。
- 功能大致如下:
- 加載SwaggerConfig。
通過(guò)配置化配置swagger。
Enable加載注解。
1. 創(chuàng)建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. 創(chuàng)建SwaggerProperties 配置相關(guān)
配置通過(guò)@PropertySource注解加載resources目錄下的swagger.properties。
創(chuàng)建SwaggerProperties配置類,這個(gè)類里包含了一般swagger初始化要使用的一些常用的屬性,如掃描包路徑、title等等。
@Data
@ToString
@ConfigurationProperties(SwaggerProperties.PREFIX)
public class SwaggerProperties {
public static final String PREFIX = "swagger";
/**
* 文檔掃描包路徑
*/
private String basePackage = "";
/**
* title 如: 用戶模塊系統(tǒng)接口詳情
*/
private String title = "深蘭云平臺(tái)系統(tǒng)接口詳情";
/**
* 服務(wù)文件介紹
*/
private String description = "在線文檔";
/**
* 服務(wù)條款網(wǎng)址
*/
private String termsOfServiceUrl = "https://www.deepblueai.com/";
/**
* 版本
*/
private String version = "V1.0";
}
做好這兩件事情基本大工搞成了,為了更好的使用配置,在idea里和官方starter包一樣,我們還需要配置一個(gè)additional-spring-configuration-metadata.json,讓我們自己的配置也具有提示的功能,具體介紹請(qǐng)產(chǎn)考:配置提示 配置提示 配置提示 配置提示 配置提示 ...


3. 加載SwaggerConfig等特性
因?yàn)槭莝tarter模塊,可能他人的項(xiàng)目目錄和starter模塊的目錄不一致,導(dǎo)致加載不到SwaggerConfig類,我們需要使用spring.factories把SwaggerConfig類裝載到spring容器。
resources/META-INF
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ io.purge.swagger.SwaggerConfig
當(dāng)然本次基于Enable方式去加載SwaggerConfig。
創(chuàng)建@EnableSwaggerPlugins注解類,使用@Import(SwaggerConfig.class)將SwaggerConfig導(dǎo)入大工搞成。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import(SwaggerConfig.class)
@EnableSwagger2
public @interface EnableSwaggerPlugins {
}
4|0使用
添加依賴
把自己編寫(xiě)好的swagger通過(guò)maven打包,自己項(xiàng)目引用。
<dependency> <groupId>com.purge.swagger</groupId> <artifactId>swagger-spring-boot-starter<factId> <version>0.1.0.RELEASE</version> </dependency>
配置swagger.properties文件
在自己項(xiàng)目模塊的resources目錄下 創(chuàng)建swagger.properties配置
swagger.properties 大致配置如下
swagger.basePackage="swagger掃描項(xiàng)目包路徑" swagger.title="swagger網(wǎng)頁(yè)顯示標(biāo)題" swagger.description="swagger網(wǎng)頁(yè)顯示介紹"
啟動(dòng)類添加@EnableSwaggerPlugins注解。
@EnableSwaggerPlugins
@SpringBootApplication
public class FrontDemoApplication {
public static void main(String[] args) {
SpringApplication.run(FrontDemoApplication.class, args);
}
}
訪問(wèn)http://ip:端口/swagger-ui.html檢查swagger-ui是否正常。

5|0總結(jié)
簡(jiǎn)單的starter代碼編寫(xiě)可以減少新模塊的復(fù)雜性,只需要簡(jiǎn)單的配置就可以使用相應(yīng)的特性,減少?gòu)?fù)制代碼不必要的錯(cuò)誤。
示例代碼地址: swagger-spring-boot
以上所述是小編給大家介紹的springboot中swagger快速啟動(dòng)流程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- Spring?Boot實(shí)現(xiàn)第一次啟動(dòng)時(shí)自動(dòng)初始化數(shù)據(jù)庫(kù)流程詳解
- SpringBoot熱部署啟動(dòng)關(guān)閉流程詳解
- SpringBoot啟動(dòng)流程SpringApplication準(zhǔn)備階段源碼分析
- SpringBoot自定義啟動(dòng)器Starter流程詳解
- SpringBoot超詳細(xì)分析啟動(dòng)流程
- Spring?Boot面試必問(wèn)之啟動(dòng)流程知識(shí)點(diǎn)詳解
- Springboot2.6.x的啟動(dòng)流程與自動(dòng)配置詳解
- SpringBoot中如何啟動(dòng)Tomcat流程
- Spring Boot 啟動(dòng)流程解析
相關(guān)文章
java去除重復(fù)對(duì)象的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇java去除重復(fù)對(duì)象的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
Java?基于Hutool實(shí)現(xiàn)DES加解密示例詳解
這篇文章主要介紹了Java基于Hutool實(shí)現(xiàn)DES加解密,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Spring動(dòng)態(tài)監(jiān)聽(tīng)Nacos配置中心key值變更的實(shí)現(xiàn)方法
Nacos本身提供支持監(jiān)聽(tīng)配置變更的操作,但在使用起來(lái),個(gè)人感覺(jué)不是很友好,無(wú)法精確到某個(gè)key的變更監(jiān)聽(tīng),所以本文小編給大家介紹了Spring動(dòng)態(tài)監(jiān)聽(tīng)Nacos配置中心key值變更的實(shí)現(xiàn)方法,需要的朋友可以參考下2024-08-08
使用Java生成JWT(JSON Web Token)的方法示例
在現(xiàn)代應(yīng)用程序中,身份驗(yàn)證和授權(quán)是至關(guān)重要的,JWT是一種簡(jiǎn)單而強(qiáng)大的身份驗(yàn)證和授權(quán)機(jī)制,可以在Web應(yīng)用程序中安全地傳輸用戶信息,本文主要介紹了使用Java生成JWT的方法示例,感興趣的可以了解一下2024-03-03
Java設(shè)計(jì)模式中的七大原則詳細(xì)講解
本篇文章主要對(duì)Java中的設(shè)計(jì)模式如,創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式以及7大原則進(jìn)行了歸納整理,需要的朋友可以參考下,希望能給你帶來(lái)幫助2023-02-02

