Java中怎么利用Swagger配置扫描接口(java,swagger,开发技术)

时间:2024-05-10 05:51:40 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1. Swagger--配置扫描接口及开关

1.1 配置扫描接口

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/***配置docket以配置Swagger具体参数*/@BeanpublicDocketdocket(){/**通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口*basePackage(finalStringbasePackage)//根据包路径扫描接口(最常用)*any()扫描所有,项目中的所有接口都会被扫描到*none()不扫描接口*通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求*withMethodAnnotation(finalClass<?extendsAnnotation>annotation)*通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口*withClassAnnotation(finalClass<?extendsAnnotation>annotation)*/returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).build();}

运行结果(因为现在只扫描了com.tian.swagger.controller 的包 所以只会有一个HelloController):

Java中怎么利用Swagger配置扫描接口

1.2 配置接口扫描过滤

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/***配置docket以配置Swagger具体参数*/@BeanpublicDocketdocket(){/**通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口*basePackage(finalStringbasePackage)//根据包路径扫描接口*any()扫描所有,项目中的所有接口都会被扫描到*none()不扫描接口*通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求*withMethodAnnotation(finalClass<?extendsAnnotation>annotation)*通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口*withClassAnnotation(finalClass<?extendsAnnotation>annotation)*/returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();}

这里只选择了请求路径包含了/tian下的所有接口

这里可以选择的参数有:

  • any() // 任何请求都扫描

  • none() // 任何请求都不扫描

  • regex(final String pathRegex) // 通过正则表达式控制

  • ant(final String antPattern) // 通过ant()控制


1.3 配置Swagger开关

enable(boolean) 表示是否启用Swagger 默认为true(启用) 如果为false,则Swagger不能在游览器中访问

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/***配置docket以配置Swagger具体参数*/@BeanpublicDocketdocket(){//enable(boolean)表示是否启用Swagger默认为true(启用)如果为false,则Swagger不能在游览器中访问returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(false).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();}

运行结果:

Java中怎么利用Swagger配置扫描接口

1.4 我只希望我的Swagger在生产环境中使用,在发布的时候不使用。怎么实现?

  1. 判断是不是生产环境,是则 flag = false,否则 flag = true

  2. 注入enable(flag)

1.4.1 准备工作,新建2个配置文件

Java中怎么利用Swagger配置扫描接口

application.properties

spring.profiles.active=dev

application-dev.properties

server.port=8081

application-pro.properties

server.port=8082
1.4.2 代码实现

Java中怎么利用Swagger配置扫描接口

SwaggerConfig.java

/***配置docket以配置Swagger具体参数*/@Bean//org.springframework.core.env.EnvironmentpublicDocketdocket(Environmentenvironment){//设置要显示swagger的环境这里是dev和test环境//org.springframework.core.env.ProfilesProfilesprofiles=Profiles.of("dev","test");//判断当前是否处于该环境//通过enable()接收此参数判断是否要显示booleanflag=environment.acceptsProfiles(profiles);//enable(boolean)表示是否启用Swagger默认为true(启用)如果为false,则Swagger不能在游览器中访问returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(flag).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();}

启动测试01:Profiles 里面包含 dev

Java中怎么利用Swagger配置扫描接口

启动测试01:Profiles 里面不包含 dev

Profilesprofiles=Profiles.of("test");

Java中怎么利用Swagger配置扫描接口

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java中怎么利用Swagger配置扫描接口的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:php中array_pad()函数的用法下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18