如何将application.properties中的值注入@PayloadRoot namespace-value

时间:2017-04-12 08:19:05

标签: java spring web-services spring-boot spring-ws

在我的项目中,有必要将 application.properties 文件中的值(依赖于配置文件)注入到端点类中,并将 @PayloadRoot 注释。

问题:命名空间值必须是常量,在春天我不能将值注入最终变量。 我找到了以这种方式注入的建议:

@PayloadRoot(namespace = "${my.namespace}", localPart = "getMyRequest")
@ResponsePayload
public JAXBElement<MyResult> myMethod(@RequestPayload JAXBElement<MyInput> request) {

但......它不起作用。 有没有人有工作的解决方案?

...谢谢

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作之一:

1)一旦你有适当的值就使用反射(但是你需要确保在终点映射发生之前设置值):example here

2)扩展类PayloadRootAnnotationMethodEndpointMapping并在方法getLookupKeysForMethod中,使用自定义方法 getQNameFromAnnotation ,您将在其中注入正确的命名空间值。

private QName getQNameFromAnnotation(PayloadRoot payloadRoot) {
    return new QName(/*INJECT YOURNAMESPACE HERE*/, payloadRoot.localPart());
}