特定模块的 JMX spring 配置
JMX spring configuration for specific module
目前我们有一个单体应用程序,其中所有 mbean 都在一个地方定义。
将来它们将被迁移并放置在专用模块中,每个模块都会有它们的 spring 上下文定义。
发现 @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) 对于从原始解决方案迁移到新方法很有用。我的 spring 版本是 5.2.4
我希望控制 mbean 导出,但从 javadoc (AnnotationMBeanExporter) 中注意到,默认情况下使用此注释从 spring 上下文导出所有 mbean。这意味着来自模块 A 的 jmx 配置将发布来自其他模块 B 或 C 的 mbean,甚至来自 3rd 方库的 mbean 也将可用。
我计划仅在想要公开 mbean 的特定模块上设置 JMX 配置,但不确定是否:
必须改变方法并将@EnableMBeanExport 放置一次,在主配置中的某处
必须创建一个新注释,这将更改默认进程
添加某项注释以在特定模块上激活它
请参阅 @EnableMBeanExport
的 javadoc。
* <p>The resulting {@link org.springframework.jmx.export.MBeanExporter MBeanExporter}
* bean is defined under the name "mbeanExporter". Alternatively, consider defining a
* custom {@link AnnotationMBeanExporter} bean explicitly.
*
因此只需将 AnnotationMBeanExporter
声明为 @Bean
并将其配置为仅注册您需要的 bean。
目前我们有一个单体应用程序,其中所有 mbean 都在一个地方定义。 将来它们将被迁移并放置在专用模块中,每个模块都会有它们的 spring 上下文定义。
发现 @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) 对于从原始解决方案迁移到新方法很有用。我的 spring 版本是 5.2.4
我希望控制 mbean 导出,但从 javadoc (AnnotationMBeanExporter) 中注意到,默认情况下使用此注释从 spring 上下文导出所有 mbean。这意味着来自模块 A 的 jmx 配置将发布来自其他模块 B 或 C 的 mbean,甚至来自 3rd 方库的 mbean 也将可用。
我计划仅在想要公开 mbean 的特定模块上设置 JMX 配置,但不确定是否:
必须改变方法并将@EnableMBeanExport 放置一次,在主配置中的某处
必须创建一个新注释,这将更改默认进程
添加某项注释以在特定模块上激活它
请参阅 @EnableMBeanExport
的 javadoc。
* <p>The resulting {@link org.springframework.jmx.export.MBeanExporter MBeanExporter}
* bean is defined under the name "mbeanExporter". Alternatively, consider defining a
* custom {@link AnnotationMBeanExporter} bean explicitly.
*
因此只需将 AnnotationMBeanExporter
声明为 @Bean
并将其配置为仅注册您需要的 bean。