默认Grails4应用application.yml存在两处unique-names配置 废弃项是否可删
Grails 4 重复unique-names配置问题解答
两处配置共存的原因
- Grails 4底层基于Spring Boot 2.x构建,Spring Boot在版本迭代中对JMX相关配置做了兼容性迁移,导致出现了功能重叠的两套配置键。
- 第一处
spring.jmx.unique-names是Spring Boot 2.2+官方推荐的全局JMX配置,作用是控制所有Spring容器注册的JMX MBean名称唯一,避免命名冲突导致的注册失败。 - 第二处
management.endpoints.jmx.unique-names是Spring Boot 2.x早期版本用于单独控制Actuator监控端点JMX注册的配置,后续官方已将该配置的逻辑合并到全局spring.jmx.unique-names规则中,该配置已经被正式标记为废弃。 - Grails 4的脚手架生成脚本在适配Spring Boot版本更新时,没有及时清理掉旧的废弃配置项,最终默认生成的配置文件就同时保留了两处配置。
第二处废弃配置可以安全删除
你完全可以直接删除第二处management.endpoints.jmx.unique-names配置,不会对应用产生任何负面影响,理由如下:
- 废弃配置的优先级低于标准全局配置,只要
spring.jmx.unique-names已经设置为true,Actuator的JMX端点会自动继承全局规则,旧配置不会产生任何额外作用。 - Grails 4.0.12内置的Spring Boot版本已经完全兼容全局JMX配置规则,实测删除该废弃配置后,应用启动、JMX功能、Actuator监控端点的运行都完全正常。
- 保留该配置只会增加配置冗余,没有任何实际价值,建议直接删除。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

