项目中存在以下托管操作:
@ManagedOperation(description = "Some description")
@ManagedOperationParameters({
@ManagedOperationParameter(name = "key", description = "Some description"),
})
public void foo(String key) {
// some logic
}
还有一个属性可以在Spring上下文中使用,用美元符号和方括号括起来:
"${some.property.key}"
是否可以在托管操作注释描述中使用上述属性键的值?类似的东西:
@ManagedOperationParameter(name = "key",
description = "Some description, please note that the key is ${some.property.key}")
答案 0 :(得分:1)
不是开箱即用的,但它很容易定制......
public class CustomAttributeSource extends AnnotationJmxAttributeSource implements EmbeddedValueResolverAware {
private StringValueResolver embeddedValueResolver;
@Override
public void setEmbeddedValueResolver(StringValueResolver resolver) {
this.embeddedValueResolver = resolver;
}
@Override
public ManagedAttribute getManagedAttribute(Method method) throws InvalidMetadataException {
ManagedAttribute managedAttribute = super.getManagedAttribute(method);
if (this.embeddedValueResolver != null) {
managedAttribute
.setDescription(this.embeddedValueResolver.resolveStringValue(managedAttribute.getDescription()));
}
return managedAttribute;
}
@Override
public ManagedOperation getManagedOperation(Method method) throws InvalidMetadataException {
ManagedOperation managedOperation = super.getManagedOperation(method);
if (this.embeddedValueResolver != null) {
managedOperation
.setDescription(this.embeddedValueResolver.resolveStringValue(managedOperation.getDescription()));
}
return managedOperation;
}
}
则...
<bean class="org.springframework.jmx.export.annotation.AnnotationMBeanExporter">
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
<property name="attributeSource">
<bean class="foo.CustomAttributeSource" />
</property>
</bean>
</property>
</bean>