生产环境profile下如何隐藏Swagger?配置@Profile注解不生效求助
排查步骤
- 确认
@Profile注解导入路径正确,必须是org.springframework.context.annotation.Profile,导错包会直接导致注解不生效 - 检查启动日志中
The following profiles are active输出,确认实际激活的环境确实为local,启动参数、系统环境变量的优先级高于application.yml配置,可能会覆盖配置值 - 排查项目中是否存在其他带
@EnableSwagger2注解的类/配置,包括第三方引入的starter自带的自动配置类,你当前仅关闭了自定义的Swagger配置类,若其他位置也开启了Swagger注解,仍会触发加载 - 确认
SwaggerConfig类所在包在Spring的组件扫描范围内,若配置类未被扫描到,添加的@Profile注解不会生效 - 若使用的是springdoc-openapi(Swagger3),检查是否未关闭默认自动装配,该依赖默认只要引入就会开启Swagger UI,与自定义配置类是否加载无关
快速解决方案
如果需要在local环境完全禁用Swagger,除了配置类加@Profile注解外,可以直接在application-local.yml中添加对应配置:
针对Swagger2
swagger: enabled: false
针对Swagger3(springdoc-openapi)
springdoc: swagger-ui: enabled: false api-docs: enabled: false
另外注意你贴出的配置类代码存在语法错误:build()后多写了一个右括号,类末尾缺失闭合右括号,建议先修正语法问题再测试。
内容的提问来源于stack exchange,提问作者Ulaş MÜEZZİNOĞLU
相关产品推荐
相关产品推荐

