上回咋們說到,spring boot 的web開發,使用swagger做爲接口測試工具,不知道你們又沒有發現一個小問題,就是swagger須要在config類中配置一個Docket bean,還要引入相對的jar包,那每次構建web項目都須要這些從新再寫一次?不用,spring boot啓動器是用來幹什麼的,不就是自動集成麼,如今咱們就來自定義一個swagger的啓動器。html
第一回咋們說道,spring boot starter實現的一個核心是啥,spring.factories嘛。首先新建一個swagger-spring-boot-starter maven項目。git
xxx-spring-boot-starter是spring boot的建議命名規則,爲了和官方的spring-boot-starter-xxx作區分。web
項目已經有了,開始擼。。。spring
建立swagger config配置項api
@ConfigurationProperties(prefix = "spring.swagger") //建立配置項,並讀取文件以spring.swagger開頭的配置參數 @ConditionalOnWebApplication //在web環境下建立此項配置 @EnableSwagger2 public class swagger { private String basePackage; private String title; private String version; [@Bean](https://my.oschina.net/bean) public Docket createRestApi(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage(basePackage)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder() .title(title) .version(version) .build(); } public void setBasePackage(String basePackage) { this.basePackage = basePackage; } public void setTitle(String title) { this.title = title; } public void setVersion(String version) { this.version = version; } }
在resources目錄下建立META-INF/spring.factoriesmaven
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ cn.le.swagger
而後打包,在咱們的web項目中去掉關於swagger的引入,並從新引入咱們的swagger-spring-boot-starter包spring-boot
<dependency> <groupId>cn.le</groupId> <artifactId>swagger-spring-boot-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
而後在web項目中的配置文件中加入咱們swagger-spring-boot-starter的配置參數工具
spring.swagger.basePackage=cn.le #只能識別unicode碼 spring.swagger.title=\u81ea\u5b9a\u4e49\u0073\u0077\u0061\u0067\u0067\u0065\u0072\u0020\u0073\u0074\u0061\u0072\u0074\u0065\u0072 spring.swagger=1.0
而後啓動項目,訪問swagger-ui.html測試
搞定,是否是很簡單。ui
-------代碼 git 地址 https://gitee.com/distant/spring-boot-geit.git