Java 如何将application.properties中的值注入@PayloadRoot命名空间值
在我的项目中,有必要将application.properties文件中的值(依赖于概要文件)注入端点类中@PayloadRoot注释的名称空间变量 问题:名称空间值必须是常量,在spring中,我无法将值注入到最终变量中。 我发现一个建议是这样注入: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>
@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注释中不需要与概要文件相关的命名空间值。这解决了我的问题。但很高兴知道,如果必须依赖于概要文件,还有另一个解决方案。