为 spring Jaxb2Marshaller 指定一个包而不是“classesToBeBound”

2022-09-04 02:16:05

我正在尝试使用Jaxb2Marshaller来使用spring来封送一组java类。我知道这可以使用以下代码完成

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>com.example.test1</value>
            <value>com.example.test2</value>
        </list>
    </property>
</bean>  

我想做的不是指定类列表,而是只想指定包含所有类的包名称(在上面的例子中是com.example)。

有没有人知道一种方法可以做到这一点,或者任何其他不需要我列出所有类的方法。任何帮助将不胜感激!

谢谢。


答案 1

从Spring 3.1(我认为)开始,您还可以使用 packagesToScan 属性,该属性接受通配符。它只是不能处理没有注释的元素,就像 contextPath 属性一样。这些需要生成的对象工厂。@XmlRootElement

可能看起来像:

<property name="packagesToScan">
    <list>
        <value>com.test.*</value>
        <value>com.*.test</value>
    </list>
</property>

答案 2

可以使用以下语法设置上下文路径:

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="com.example"/>
</bean>  

推荐