介紹
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、做網(wǎng)站、余慶網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、余慶網(wǎng)絡(luò)營(yíng)銷、余慶企業(yè)策劃、余慶品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供余慶建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:vcdvsql.cn
可能大家都有用過(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
緣由
有開發(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ì)
通過(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使用
添加依賴
把自己編寫好的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代碼編寫可以減少新模塊的復(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ì)創(chuàng)新互聯(lián)網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
分享標(biāo)題:springboot中swagger快速啟動(dòng)流程
路徑分享:http://vcdvsql.cn/article18/jhiedp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、標(biāo)簽優(yōu)化、搜索引擎優(yōu)化、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)