1. 程式人生 > >spring boot(三)自定義啟動器 swagger2

spring boot(三)自定義啟動器 swagger2

開發十年,就只剩下這套架構體系了! >>>   

上回咋們說到,spring boot 的web開發,使用swagger作為介面測試工具,不知道大家又沒有發現一個小問題,就是swagger需要在config類中配置一個Docket bean,還要引入相對的jar包,那每次構建web專案都需要這些重新再寫一次?不用,spring boot啟動器是用來幹什麼的,不就是自動整合麼,現在我們就來自定義一個swagger的啟動器。

啟動器

第一回咋們說道,spring boot starter實現的一個核心是啥,spring.factories嘛。首先新建一個swagger-spring-boot-starter maven專案。

xxx-spring-boot-starter是spring boot的建議命名規則,為了和官方的spring-boot-starter-xxx做區分。

專案已經有了,開始擼。。。

建立swagger config配置項

@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.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.le.swagger

然後打包,在我們的web專案中去掉關於swagger的引入,並重新引入我們的swagger-spring-boot-starter包

	<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

搞定,是不是很簡單。

-------程式碼 git 地址 https://gitee.com/distant/spr