您好,登錄后才能下訂單哦!
這篇文章給大家介紹springboot中怎么快速啟動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(); } }
緣由
有開發過微服務的小伙伴應該體會過。當微服務模塊多的情況下,每個模塊都需要配置這樣的一個類進行加載swagger
。造成每個模塊都存在大致一樣的SwaggerConfig
,極端的情況下,有些朋友復制其他模塊的SwaggerConfig
進行改造之后,發現仍然加載不出swagger
的情況,造成明明是復制的,為何還加載不出,排查此bug及其費時間。
在此之上,可以構建出一個swagger-starter
模塊,只需要引用一個jar
,加載一些特殊的配置,就可以快速的使用到swagger
的部分功能了。
設計
創建模塊swagger-spring-boot-starter
。 功能大致如下:
加載SwaggerConfig。
通過配置化配置swagger。
Enable加載注解。
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(); } }
配置通過@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
,讓我們自己的配置也具有提示的功能,具體介紹請產考:配置提示 配置提示 配置提示 配置提示 配置提示 ...
因為是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 { }
添加依賴
把自己編寫好的swagger
通過maven
打包,自己項目引用。
<dependency> <groupId>com.purgeteam</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是否正常。
關于springboot中怎么快速啟動swagger就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。