swagger用来在开发阶段方便前后端开发。降低交流成本。但是版本上线之后,要是吧swagger带上去就危险了!
@Configuration
@EnableSwagger2
@ConditionalOnProperty(prefix = "swagger2",value = {"enable"},havingValue = "true")
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.--.---.---.---.rest"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("···接口文档")
.description("")
.version("1.0")
.build();
}
}
通过@ConditionalOnProperty(prefix = “swagger2”,value = {“enable”},havingValue = “true”)注解实现。
读取配置文件中前缀为swagger2的配置,属性名为enable,值为true。
当条件成立,此配置类被激活。
两个属性name以及havingValue,其中name用来从application.properties中读取某个属性值,如果该值为空,则返回false;如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。如果返回值为false,则该configuration不生效;为true则生效
application.yml
spring:
profiles: dev
swagger2:
enable: true
---
spring:
profiles: prod
swagger2:
enable: false(或者在pro环境下不写此配置)
运行dev环境Java -jar demo.jar --spring.profiles.active=dev
运行prod环境 java -jar demo.jar --spring.profiles.active=prod
此时我们访问开发环境可以进swagger,进生产环境则会被屏蔽调。