Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将application.properties中的值注入@PayloadRoot命名空间值_Java_Spring_Web Services_Spring Boot_Spring Ws - Fatal编程技术网

Java 如何将application.properties中的值注入@PayloadRoot命名空间值

Java 如何将application.properties中的值注入@PayloadRoot命名空间值,java,spring,web-services,spring-boot,spring-ws,Java,Spring,Web Services,Spring Boot,Spring Ws,在我的项目中,有必要将application.properties文件中的值(依赖于概要文件)注入端点类中@PayloadRoot注释的名称空间变量 问题:名称空间值必须是常量,在spring中,我无法将值注入到最终变量中。 我发现一个建议是这样注入: @PayloadRoot(namespace = "${my.namespace}", localPart = "getMyRequest") @ResponsePayload public JAXBElement<MyResult>

在我的项目中,有必要将application.properties文件中的值(依赖于概要文件)注入端点类中@PayloadRoot注释的名称空间变量

问题:名称空间值必须是常量,在spring中,我无法将值注入到最终变量中。 我发现一个建议是这样注入:

@PayloadRoot(namespace = "${my.namespace}", localPart = "getMyRequest")
@ResponsePayload
public JAXBElement<MyResult> myMethod(@RequestPayload JAXBElement<MyInput> request) {
@PayloadRoot(namespace=“${my.namespace}”,localPart=“getMyRequest”)
@回应书
公共JAXBElement-myMethod(@RequestPayload-JAXBElement-request){
但是…它不起作用。 有人有有效的解决方案吗


谢谢…

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

1) 获得适当的值后使用反射(但需要确保在端点映射发生之前设置该值):

2) 扩展该类,并在方法GetLookupKeysformMethod中,使用自定义的a方法getQNameFromAnnotation,在该方法中插入名称空间的正确值

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

您好VirtualRoll,谢谢您的限定性回答。我的问题是,我有三个服务器(devel、test、prod)与我的Web服务一起运行。每个不同的Web服务都需要一个具有单独地址位置(指向正确的服务器)的wsdl。这是一个基本事实。wsdl文件中的命名空间可以与三个wsdl文件中的命名空间相同。因此,PayloadRoot注释中不需要与概要文件相关的命名空间值。这解决了我的问题。但很高兴知道,如果必须依赖于概要文件,还有另一个解决方案。