如何完全禁用JHipster生成的Spring Boot的management.observations
完全禁用JHipster 8.7.0中的Spring Boot Observations方案
问题分析
升级到JHipster 8.7.0后,即使配置了观测关闭项并移除自动添加的观测键值配置,仍出现Bean依赖异常。核心原因包括:
- 配置存在缩进或拼写错误
- 自定义
OtelConfiguration类仍在创建OpenTelemetry相关Bean - Spring Boot的观测、追踪自动配置类未被完全排除
解决方案
1. 修正配置文件
确保application.yaml配置缩进正确,使用标准配置键(注意是enabled而非enable),同时额外关闭追踪功能避免触发关联Bean创建:
management: observations: enabled: all: false tracing: enabled: false
2. 排除自动配置类
在应用主类上排除观测、追踪相关的自动配置,阻止Spring Boot创建这些组件:
import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.tracing.MicrometerTracingAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryAutoConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(exclude = { ObservationAutoConfiguration.class, WebMvcObservationAutoConfiguration.class, MicrometerTracingAutoConfiguration.class, OpenTelemetryAutoConfiguration.class }) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
3. 控制自定义OtelConfiguration的加载
如果完全不需要OpenTelemetry功能,直接删除com.aryza.ls.goodbook.config.OtelConfiguration类;若需保留该类仅在观测启用时生效,添加条件注解:
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; @Configuration @ConditionalOnProperty( prefix = "management.observations", name = "enabled.all", havingValue = "true", matchIfMissing = true ) public class OtelConfiguration { // 原有Bean定义... }
4. 移除不必要的依赖(可选)
如果彻底不需要观测、追踪功能,直接从依赖管理中移除相关包:
- Maven(pom.xml):移除
micrometer-tracing、opentelemetry-exporter-otlp等相关依赖 - Gradle(build.gradle):移除对应的依赖项
效果验证
完成以上操作后,启动应用将不再触发观测相关Bean的创建,依赖异常问题也会消失。
内容的提问来源于stack exchange,提问作者Dilyan Galabov
相关产品推荐
相关产品推荐

