Spring-Boot:Jmx注释在库中不起作用

时间:2014-10-09 13:55:36

标签: java spring spring-boot

我有一个Spring-Boot应用程序,只有一个简单的休息控制器。在这个控制器上,我添加了jmx注释@ManagedResource和@ManagedOperation,它工作正常。它在Jmx中正确暴露。 这个应用程序取决于" global-commons"库可以为我们的所有模块分享许多基本功能。

但是如果我在这个库中为类添加相同的注释,它将被忽略! 在你问之前,是的,图书馆是用最新的变化导入的。 日志中没有错误或警告消息。

我正在使用xml文件配置我的所有bean。这两个类都是在同一文件中定义的bean。 一个是@RestController。另一个是一个简单的实用类。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

确保Spring管理的global-commons库中的类。只要库中没有任何类由Spring管理,注释就没有任何效果。

答案 1 :(得分:0)

我发现了问题: 没有工作的bean被定义为“内部”bean:

<bean id="imMetrics" class="com.imetrik.global.common.metrics.ImGlobalMetrics" init-method="init">
    ...
    <property name="reporterList">
        <util:list>
            <bean id="jmxReporter" class="com.imetrik.global.common.metrics.reporters.ImJmxReporter">
                <property name="registryId" value="metricRegistry1"/>
                <property name="durationUnit" value="SECONDS"/>
                <property name="rateUnit" value="SECONDS"/>
                <property name="domain" value="com.imetrik.global.metric"/>
            </bean>
        </util:list>
    </property>
</bean>

带注释的bean是“jmxReporter”。

但是如果我把它作为普通的“第一级”bean放在外面并使用引用,它就可以了。 但它很烦人!有没有办法让它作为内部豆子工作?