springboot,springmvc整合swagger

1.Springboot整合Swagger2

1.1.pom加swagger依賴

<dependency>

???????? <groupId>io.springfox</groupId>

???????? <artifactId>springfox-swagger2</artifactId>

???????? <version>2.9.2</version>

????? </dependency>

????? <!-- <dependency>

???????? io.springfox

???????? springfox-swagger-ui

???????? 2.9.2

????? -->

????? <dependency>

??????????? <groupId>com.github.xiaoymin</groupId>

??????????? <artifactId>swagger-bootstrap-ui</artifactId>

??????????? <version>1.9.0</version>

??????? </dependency>

????? <dependency>

????? ??? <groupId>io.swagger.core.v3</groupId>

????? ??? <artifactId>swagger-annotations</artifactId>

????? ??? <version>2.0.8</version>

????? </dependency>

??????? <dependency>

????? ??? <groupId>io.swagger.core.v3</groupId>

????? ??? <artifactId>swagger-models</artifactId>

????? ??? <version>2.0.8</version>

</dependency>

1.2.添加swagger配置類

@Configuration

@EnableSwagger2

@EnableSwaggerBootstrapUI

//@ConditionalOnExpression("${swagger.enable:true}")

public classSwagger2 {


//??? @Override?

//??? public voidaddResourceHandlers(ResourceHandlerRegistry registry) {?

//???????registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");?

//??????? registry.addResourceHandler("/webjars*").addResourceLocations("classpath:/META-INF/resources/webjars/");?

//??? }?


?? @Value("${swagger.enable:true}")

?? private String enable;


?? @Value("${swagger.basePackage}")

?? private String basePackage;


?? @Bean

?? public Docket createRestApi()

{

????? Predicateselector= PathSelectors.none();

????? if("true".equals(enable)) {

???????? selector=PathSelectors.any();

????? }

????? //定義全局參數(shù)

????? ?Listpars = new ArrayList<>();

????? ??? ParameterBuildertoken = new ParameterBuilder();

????? ??? token.name("token").description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();

????? ??? pars.add(token.build());

????? return newDocket(DocumentationType.SWAGGER_2)

??????????? .globalOperationParameters(pars) // 全局參數(shù)

??????????? .groupName("demo01")//指定分組

??????????? .apiInfo(apiInfo())

??????????? .select()

??????????? .apis(RequestHandlerSelectors.basePackage(basePackage))

//????????? .paths(PathSelectors.any())

??????????? .paths(selector)

??????????? .build();

?? }


?? private ApiInfo apiInfo() {

????? return new ApiInfoBuilder()

??????????? .title("SpringBoot測試使用 Swagger2 構(gòu)建RESTful API")

??????????? .description("springboot demo 接口文檔")

??????????? .version("1.0")

??????????? .build();

?? }

}

1.3.加上swagger啟用禁用開關(guān)

新建application.properties文件

#swagger啟用禁用標識true:啟用

swagger.enable=true

#swagger掃描需生成文檔的包路徑

swagger.basePackage=com.tjc.springbootDemo.controller


1.4.Swagger具體注釋用法

https://blog.csdn.net/xiaojin21cen/article/details/78654652

1.5本地訪問swagger文檔

訪問原生swagger地址:http://localhost:8080/swagger-ui.html#/

訪問bootStrap-swagger地址:http://localhost:8080/doc.html

訪問json文件數(shù)據(jù)地址:http://localhost:8083/v2/api-docs

1.6.在線訪問swagger接口

https://www.cnblogs.com/vipstone/p/9841716.html

1.7.demo源碼訪問地址

https://gitee.com/JasonTran/swagger2-springbootDemo.git

2.Springmvc整合Swagger2

2.1.pom加依賴

<!-- swagger -->

????? <dependency>

????? ??? <groupId>com.fasterxml.jackson.core</groupId>

????? ??? <artifactId>jackson-annotations</artifactId>

????? ??? <version>2.9.9</version>

????? </dependency>

????? <dependency>

????? ??? <groupId>com.fasterxml.jackson.core</groupId>

????? ??? <artifactId>jackson-core</artifactId>

????? ??? <version>2.9.9</version>

????? </dependency>

????? <dependency>

????? ??? <groupId>com.fasterxml.jackson.core</groupId>

????? ??? <artifactId>jackson-databind</artifactId>

????? ??? <version>2.9.9</version>

????? </dependency>

????? ?<dependency>

???????? <groupId>io.springfox</groupId>

???????? <artifactId>springfox-swagger2</artifactId>

???????? <version>2.9.2</version>

????? </dependency>

????? <!-- <dependency>

???????? io.springfox

???????? springfox-swagger-ui

???????? 2.7.0

????? -->

????? <dependency>

??????????? <groupId>com.github.xiaoymin</groupId>

??????????? <artifactId>swagger-bootstrap-ui</artifactId>

??????????? <version>1.9.0</version>

??????? </dependency>

????? <dependency>

????? ??? <groupId>io.swagger.core.v3</groupId>

????? ??? <artifactId>swagger-annotations</artifactId>

????? ??? <version>2.0.8</version>

????? </dependency>

??????? <dependency>

????? ??? <groupId>io.swagger.core.v3</groupId>

????? ??? <artifactId>swagger-models</artifactId>

????? ??? <version>2.0.8</version>


2.2.添加swagger配置類

@Configuration

@EnableSwagger2

@EnableWebMvc

@EnableSwaggerBootstrapUI

@PropertySource(value="classpath:swagger.properties")

public classSwagger2 {


?? @Value("${swagger.enable:true}")

?? private String enable;


?? @Value("${swagger.basePackage}")

?? private String basePackage;


?? @Bean

?? public Docket createRestApi()

{

????? Predicateselector= PathSelectors.none();

????? //啟用swagger

????? if("true".equals(enable)) {

????? ?? selector=PathSelectors.any();

????? }

//??? //定義全局參數(shù)

//??? List pars = new ArrayList();

//??? ??? ParameterBuilder token = newParameterBuilder();

//??? ???token.name("token").description("token").modelRef(newModelRef("string")).parameterType("header").required(false).build();

//??? ??? pars.add(token.build());

????? return newDocket(DocumentationType.SWAGGER_2)

//????????? .globalOperationParameters(pars)//全局參數(shù)

??????????? .groupName("demo01")//指定分組

??????????? .apiInfo(apiInfo())

??????????? .select()

??????????? .apis(RequestHandlerSelectors.basePackage(basePackage))

//????????? .paths(PathSelectors.any())

??????????? .paths(selector)

??????????? .build();

?? }


?? private ApiInfo apiInfo() {

????? return new ApiInfoBuilder()

??????????? .title("SpringMvc測試使用 Swagger2 構(gòu)建RESTful API")

??????????? .description("springmvc demo 接口文檔")

??????????? .version("1.0")

??????????? .build();

?? }

}

2.3. 創(chuàng)建swagger.properties文件

#swagger啟用禁用標識true:啟用

swagger.enable=true

#swagger掃描需生成文檔的包路徑

swagger.basePackage=com.tjc.springmvcDemo.controller


2.4.springmvc初始化文件添加掃包配置

<!-- 開啟springmvc注解 -->

?? ?<mvc:annotation-driven/>

????<mvc:default-servlet-handler/>

?? <context:component-scanbase-package="com.tjc.springmvcDemo.controller"/>

? <!-- 添加配置文件 -->

? <context:property-placeholderlocation="classpath:swagger.properties"/>


?? <context:component-scanbase-package="com.tjc.springmvcDemo.config.swagger"/>

2.5.Swagger具體注釋用法

https://blog.csdn.net/xiaojin21cen/article/details/78654652

2.6.在線訪問swagger接口

https://www.cnblogs.com/vipstone/p/9841716.html

2.7.demo源碼訪問地址

https://gitee.com/JasonTran/swagger2-springmvcDemo.git

3.問題整理

3.1.項目中攔截器辙培,過濾器攔截了swagger路徑

解決方案:剔除/swagger-resources周伦,/webjars/哩至,/v2/卦碾,/doc.html/等路徑


.excludePathPatterns("/swagger-resources/**","/webjars/**","/v2/**","/doc.html/**");

3.2. guava-${version}.jar包沖突

解決方案:在maven倉庫查找最新guava jar包;

3.3.分布式聚合文檔結(jié)合eureka注冊中心發(fā)現(xiàn)服務,zuul解決瀏覽器跨域佑女,通過調(diào)用swagger的/v2/doc-api接口獲取文檔json數(shù)據(jù)實現(xiàn)文檔聚合管理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烟馅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子玖像,更是在濱河造成了極大的恐慌,老刑警劉巖炬藤,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件御铃,死亡現(xiàn)場離奇詭異碴里,居然都是意外死亡,警方通過查閱死者的電腦和手機上真,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門咬腋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人睡互,你說我怎么就攤上這事根竿。” “怎么了就珠?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵寇壳,是天一觀的道長。 經(jīng)常有香客問我妻怎,道長壳炎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任逼侦,我火速辦了婚禮匿辩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘榛丢。我一直安慰自己铲球,他們只是感情好,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布晰赞。 她就那樣靜靜地躺著稼病,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掖鱼。 梳的紋絲不亂的頭發(fā)上然走,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音锨用,去河邊找鬼丰刊。 笑死,一個胖子當著我的面吹牛增拥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寻歧,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼掌栅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了码泛?” 一聲冷哼從身側(cè)響起猾封,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎噪珊,沒想到半個月后晌缘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體齐莲,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年磷箕,在試婚紗的時候發(fā)現(xiàn)自己被綠了选酗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岳枷,死狀恐怖芒填,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情空繁,我是刑警寧澤殿衰,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站盛泡,受9級特大地震影響闷祥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜傲诵,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一蜀踏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掰吕,春花似錦果覆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至菱属,卻和暖如春钳榨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纽门。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工薛耻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赏陵。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓饼齿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝙搔。 傳聞我的和親對象是個殘疾皇子缕溉,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容