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
用于JAXB无setterless集合的getBean中的Spring转换策略 问题:_Spring_Jaxb_Mocking_Cxf - Fatal编程技术网

用于JAXB无setterless集合的getBean中的Spring转换策略 问题:

用于JAXB无setterless集合的getBean中的Spring转换策略 问题:,spring,jaxb,mocking,cxf,Spring,Jaxb,Mocking,Cxf,如何注入包含JAXB生成的列表的bean 细节 这些列表没有设置器 您可以通过 getMyList().getList().add(stuff) 对于标准java集合,您通常依赖spring UTIL,但spring不支持这些JAXB列表。 消息:未找到匹配的编辑器或转换策略 上下文 WSDL优先-CXF服务器 模拟响应从Spring应用程序上下文文件中提取 提示 我不愿意仅仅为了模拟响应而引入第二个JAXB运行时,特别是考虑到这将涉及生成大量新类来建模我的域对象(即,从而复制wsdl2

如何注入包含JAXB生成的列表的bean

细节
  • 这些列表没有设置器
  • 您可以通过
    getMyList().getList().add(stuff)
    对于标准java集合,您通常依赖spring UTIL,但spring不支持这些JAXB列表。
    消息:
    未找到匹配的编辑器或转换策略
上下文
  • WSDL优先-CXF服务器
  • 模拟响应从Spring应用程序上下文文件中提取
提示
我不愿意仅仅为了模拟响应而引入第二个JAXB运行时,特别是考虑到这将涉及生成大量新类来建模我的域对象(即,从而复制wsdl2java生成的对象)。

尝试为列表创建一个Bean:

<bean id="list" class="java.util.ArrayList">
    <constructor-arg>
        <list>
            <ref bean="element1" />
            <ref bean="element2" />                
        </list>
    </constructor-arg>
</bean>

然后使用a$B语法为内部类创建bean:

<bean id="myList" class="myPackage.MyOuterClass$MyList"  >
    <property name="list" ref="list" />
</bean>

最后,外部类Bean:

<bean id="myOuterClass" class="myPackage.MyOuterClass"  >
    <property name="myList" ref="myList" />
</bean>

我的解决方案:

我最终使用了eclipselink MOXy

MOXy的选择是由以下特征驱动的

  • MOXy允许在CXF生成的类之外声明根元素。这样就没有必要干扰这些类

  • MOXy作为一个JAXB实现,在处理JAXB填充列表的方式(没有setter)方面没有问题

备注:

  • MOXy XPath支持仍然很弱。我需要从整个XML文件(可能的模拟响应列表)中访问一个特定的XML元素(响应),并希望能够基于XPath谓词仅解组此XML文件的一部分,但这还不受支持(在2.5中)。计划为2.6提供支持

  • 我没有使用任何Spring JAXB前端作为MOXy的外观,因为我的模拟SEI已经通过Spring注入

  • 使用MOXy证明是一种愉快的体验,而且很容易开始

  • 我没有经历过MOXy作为JAXB负载jar与CXF将JDK-JAXB实现用于其SOAP层的方式之间的任何冲突


可以使用XmlElementWrapper注释删除内部列表类MyList。请参见此处:。这样就有了一个普通的可注入java列表。通过Spring示例,这里有一个列表定义:@WA,thx。我知道这个XmlElementWrapper,但我首先使用WSDL,我不想使用外来插件。我的域对象中的所有JAXB Anotation都是由CXF wsdl2java创建的。ATM,我在看spring oxm手动解组。定制弹簧转换器也可能是另一个线索。无论如何,谢谢你。