springBoot 整合 swagger

引入 swagger 依賴關(guān)系

<!--swagger2-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>

swagger 配置

@Configuration
@EnableSwagger2
@Profile({"dev", "test"})// 設(shè)置 dev test 環(huán)境開啟
public class SwaggerConfig {
    @Bean
    public Docket controllerApi() {
        //添加head參數(shù)start
        ParameterBuilder signPar = new ParameterBuilder();
        ParameterBuilder RTimePar = new ParameterBuilder();
        List<Parameter> parameters = new ArrayList<>();
        signPar.name("sign").description("簽名:請(qǐng)求參數(shù)名字母升序md5加密").modelRef(new ModelRef("string")).parameterType("header").required(true).build();
        RTimePar.name("time").description("請(qǐng)求時(shí)間戳").modelRef(new ModelRef("string")).parameterType("header").required(true).build();

        parameters.add(signPar.build());
        parameters.add(RTimePar.build());
        //添加head參數(shù)end

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        .title("XXX")
                        .description("XXX")
                        .contact(new Contact("XXX", "XXX", "XXX@xx.xx"))
                        .version("1.0")
                        .build())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))           //加了ApiOperation注解的方法,生成接口文檔
                .paths(PathSelectors.any())
                .build().globalOperationParameters(parameters);
    }
}
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

@Api(value = "HOME", tags = "HOME")
@RestController
@RequestMapping("/home")
public class HomeController {

    @ApiOperation(value = "home", notes = "HOME",httpMethod = "GET")
    @GetMapping
    public String home(){
        return "home";
    }
}

swagger2 整合成功。
訪問地址 http://localhost:8080/swagger-ui.html

1.png

整合時(shí)遇到的問題

  1. 后臺(tái)報(bào)錯(cuò)
2018-07-26 11:25:55.375  WARN 15601 --- [nio-8080-exec-8] o.s.web.servlet.PageNotFound             : No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'

我們看一下錯(cuò)誤信息,No mapping found for HTTP request with URI [/swagger-ui.html] 沒有前端資源的映射。發(fā)現(xiàn)是靜態(tài)文件資源映射問題。

swagger 所有的前端文件都在springfox-swagger-ui.jar 文件里。目錄如下:

3.png

spring boot 自動(dòng)配置并沒有將 swagger 的靜態(tài)資源路徑映射到META-INF/resources/ 下面。我們需要自己增加映射。

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}
  1. 頁面不停彈出窗口。


    2.png

這個(gè)問題就比較神奇了。百度之后發(fā)現(xiàn)各種回答。大多跟攔截器,資源映射等等有關(guān)。但是我的項(xiàng)目這些問題都排除了。

此時(shí)我突然發(fā)現(xiàn)了這個(gè)問題出現(xiàn)的規(guī)律:
正好當(dāng)時(shí)項(xiàng)目我要部署,測試服務(wù)器,一些配置信息需要修改。所以我采取了多配置文件的方式。重新創(chuàng)建了一個(gè)application-demo.yml配置文件并將測試服務(wù)器的配置內(nèi)容修改完成。在application.yml主配置文件內(nèi)將 spring.profiles.active=dev 修改為spring.profiles.active=demo

此時(shí)啟動(dòng)項(xiàng)目。訪問swagger.html開始 不停彈窗。
我再將demo 修改回 dev 之后。訪問swagger.html 就又好了。

此時(shí)我就突然想到了。SwaggerConfig 配置文件內(nèi)的
@Profile({"dev", "test"})// 設(shè)置 dev test 環(huán)境開啟
指定dev test 環(huán)境開啟 swagger api

修改 @Profile({"dev", "test","demo"})// 設(shè)置 dev test demo環(huán)境開啟

重新啟動(dòng)項(xiàng)目,修改成功。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,271評(píng)論 6 342
  • 1. pom.xml文件中引入依賴 2. 創(chuàng)建swagger配置類 啟動(dòng)項(xiàng)目 訪問ui地址 http://loca...
    東方舵手閱讀 2,636評(píng)論 0 0
  • SpringMVC原理分析 Spring Boot學(xué)習(xí) 5、Hello World探究 1、POM文件 1、父項(xiàng)目...
    jack_jerry閱讀 1,483評(píng)論 0 1
  • 你要相信,屬于你的愛情會(huì)開花 (上) - 簡書 4 盧心怡用紙巾擦了擦嘴和手,端著半杯未喝完的咖啡,走到圖書館門口...
    楓小凌閱讀 656評(píng)論 4 7

友情鏈接更多精彩內(nèi)容