国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringMVC如何在生產環境禁用Swagger的方法

SpringMVC如何在生產環境禁用Swagger的方法

2021-04-06 11:53若魚1919 Java教程

本篇文章主要介紹了SpringMVC如何在生產環境禁用Swagger的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Swagger 是一個規范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,允許API來始終保持同步。

Swagger 讓部署管理和使用功能強大的API從未如此簡單。好吧,以上是官方的說法,我直接復制的,在我看來swagger就是一個接口文檔管理器,以前我們寫接口一般都是world編寫,但是有一個問題就是測試的時候需要依賴第三方工具,GET的接口還好,直接瀏覽器打開,POST的只能依賴另外的工具了,而Swagger呢,可以直接通過代碼中的注解生成接口文檔(JavaEE),一般人都用這種方式,而且直接集成在項目中,方便成員查看,同時還能直接測試,另外Swagger的界面也不錯,也許這就是我選擇用Swagger的原因吧,直接官方說的RESTful 風格那個不用管,不是RESTful 風格的接口也能用,當然Swagger還有一種方式就是手動寫接口說明了,這樣的好處就是代碼只有代碼,因為一旦代碼中添加了Swagger的接口注解后,代碼量還是增加了不少,當然壞處就是你改完了代碼,還要去改接口文檔

SpringMVC集成springfox-swagger2和springfox-swagger-ui很簡單,只需要兩步:

(1)pom中添加依賴

?
1
2
3
4
5
6
7
8
9
10
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>${springfox-swagger.version}</version>
  </dependency>
  <dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>${springfox-swagger.version}</version>
  </dependency>

(2)添加Swagger的配置類:

?
1
2
3
4
5
6
@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.XXX.controller")
public class SwaggerConfig{
}

然后就可以通過http://localhost/swagger-ui.html看到項目中所有的接口信息了,通過http://localhost/v2/api-docs就能看到json數據。

但是,如何在生產環境禁用這些api文檔呢?試了很多種方式,最終找到一個簡單實用的辦法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.XXX.controller")
public class SwaggerConfig{ 
 @Autowired
 ConfigService configService;
  
 @Bean
 public Docket customDocket() {
  if(configService.getServerEnv() == ServerEnvEnum.ONLINE) {
   return new Docket(DocumentationType.SWAGGER_2)
   .apiInfo(apiInfoOnline())
  .select()
    .paths(PathSelectors.none())//如果是線上環境,添加路徑過濾,設置為全部都不符合
  .build();
  }else {
   return new Docket(DocumentationType.SWAGGER_2)
   .apiInfo(apiInfo());
  }
 }
 
 private ApiInfo apiInfo() {
  return new ApiInfoBuilder()
    .title("XXX系統")
    .description("XXX系統接口")
    .license("")
    .licenseUrl("")
    .termsOfServiceUrl("")
    .version("1.0.0")
    .contact(new Contact("","", ""))
    .build();
 }
 private ApiInfo apiInfoOnline() {
  return new ApiInfoBuilder()
    .title("")
    .description("")
    .license("")
    .licenseUrl("")
    .termsOfServiceUrl("")
    .version("")
    .contact(new Contact("","", ""))
    .build();
 }
}

現在http://localhost/swagger-ui.html這個頁面雖然還能訪問,那是卻看不到任何內容了,包括http://localhost/v2/api-docs也是一樣。

應該還有更好的辦法!

參考:http://www.jfrwli.cn/article/153552.html

swagger必須要跟springmvc在同一個context才行,springmvc只是spring的一個子context。如果swagger讓spring的context加載,那么swagger的那些url用springmvc的攔截器是攔截不到的!

所以,兩種解決辦法:

如果是使用注解的方式:

(1)spring-mvc的配置:

?
1
2
3
4
5
<!-- 使用Annotation自動注冊Bean,只掃描@Controller -->
<context:component-scan base-package="com.inspur.eyun.yunbx" use-default-filters="false"><!-- base-package 如果多個,用“,”分隔 -->
 <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 <context:include-filter type="assignable" expression="com.inspur.eyun.yunbx.swagger.SwaggerConfig"/>
</context:component-scan>

注意要把swagger的配置加進來,同時:

(2)spring的配置:

?
1
2
3
4
5
<!-- 包掃描、注解相關 -->
<context:component-scan base-package="com.inspur.eyun.yunbx">
 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 <context:exclude-filter type="assignable" expression="com.inspur.eyun.yunbx.swagger.SwaggerConfig"/>
</context:component-scan>

注意把swagger排除掉

(3)Swagger的配置:

?
1
2
3
4
5
6
@Configuration
@EnableSwagger2
@EnableWebMvc
@ComponentScan("com.inspur.eyun.yunbx.controller")
public class SwaggerConfig{
}

注意@Configuration注解。

當然更推薦的辦法是使用xml配置的方式,因為這樣可以不用引入swagger的依賴包:

(1)spring-mvc的配置:

?
1
2
3
4
5
<!-- 使用Annotation自動注冊Bean,只掃描@Controller -->
 <context:component-scan base-package="com.inspur.eyun.yunbx" use-default-filters="false"><!-- base-package 如果多個,用“,”分隔 -->
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 </context:component-scan>
<import resource="classpath:spring-mvc-swagger.xml" />

spring-mvc-swagger.xml:

?
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd">
 <description>SpringMVC Swagger Configuration</description>
 <!-- swagger配置,生產環境置空 -->
 <bean class="com.inspur.eyun.yunbx.swagger.SwaggerConfig" />
</beans>

注意:我們這里把swagger單獨放到一個配置文件中,如果是線上環境,則文件內容為空,如果是線下測試環境,則配置上Swagger。

(2)spring的配置:

?
1
2
3
4
<!-- 包掃描、注解相關 -->
 <context:component-scan base-package="com.inspur.eyun.yunbx">
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 </context:component-scan>

(3)Swagger的配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig{
 
 @Bean
 public Docket customDocket() {
  return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo())
    .select()
    .apis(RequestHandlerSelectors.basePackage("com.inspur.eyun.yunbx.controller"))
    .paths(PathSelectors.any())
    .build();
 }
 
 private ApiInfo apiInfo() {
  return new ApiInfoBuilder()
    .title("XXX平臺")
    .description("XXX平臺接口")
    .license("")
    .licenseUrl("")
    .termsOfServiceUrl("")
    .version("1.0.0")
    .contact(new Contact("","", ""))
    .build();
 }
}

注意:這里我們去掉了@Configuration,同時,修改我們的pom,配置多profile打包:

pom.xml:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- Swagger -->
  <dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>${springfox-swagger.version}</version>
   <scope>${swagger.scope}</scope>
  </dependency>
  <dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <scope>${swagger.scope}</scope>
   <version>${springfox-swagger-ui.version}</version>
  </dependency>

注意:這里的依賴的scope是動態設置的,如果是線上環境,我們把scope設置成provided就可以。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<profiles>
  <profile>
   <id>dev</id>
   <properties>
    <profiles.active>dev</profiles.active>
    <swagger.scope>compile</swagger.scope>
   </properties>
   <activation>
    <activeByDefault>true</activeByDefault>
   </activation>
  </profile>
  <profile>
   <id>test</id>
   <properties>
    <profiles.active>test</profiles.active>
    <swagger.scope>compile</swagger.scope>
   </properties>
  </profile>
  <profile>
   <id>online</id>
   <properties>
    <profiles.active>online</profiles.active>
    <swagger.scope>provided</swagger.scope>
   </properties>
  </profile>
 </profiles>

通過不同的profile給swagger的依賴設置不同的scope!

注意:springfox-swagger.version=2.7.0有bug,可以使用低版本2.6.1。太他媽的坑!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/goldenfish1919/article/details/78280051

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产日韩欧美在线 | 日韩av手机版| 一区二区三区不卡视频 | 精品久久久久久久久福利 | 欧美精品一区在线观看 | 欧美久久精品 | 免播放器看av | 国产日韩一区 | 专干老肥女人88av | 日韩精品观看 | 欧美一区二区三区在线播放 | 在线观看av网站永久 | av免费网站在线观看 | 国产精品99一区二区三区 | 一区二区三区在线看 | 亚洲欧美在线观看视频 | 国产欧美久久一区二区三区 | 中文字幕国产一区 | 成人精品网站在线观看 | 毛片一级在线 | 99久久婷婷国产综合精品电影 | 婷婷亚洲五月 | 一本大道久久a久久精二百 国产欧美视频一区二区 | 在线精品亚洲欧美日韩国产 | 91精品国产91久久久久久吃药 | 精品国产一区二区三区日日嗨 | 中文字幕国产 | 欧美日韩一级电影 | 一区二区三区视频在线观看 | 亚洲精品视频在线观看免费 | 国产精品毛片久久久 | 国产麻豆一区二区三区四区 | 国产精品视频一区二区三区不卡 | 精品日韩| 夜夜骑日日操 | 国产精品中文字幕在线 | 色综合天天综合网国产成人网 | 国产精品毛片无码 | 久久国内免费视频 | 久久国产精品视频 | 亚洲精品一 |