我正在尝试使用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)。
有没有人知道这样做的方法,或任何其他不要求我列出所有类的方法。任何帮助将不胜感激!
感谢。
答案 0 :(得分:11)
从Spring 3.1(我认为)你也可以使用 packagesToScan 属性,该属性接受通配符。它不适用于没有@XmlRootElement
注释的元素,就像 contextPath 属性一样。这些需要生成对象工厂。
看起来像:
<property name="packagesToScan">
<list>
<value>com.test.*</value>
<value>com.*.test</value>
</list>
</property>
答案 1 :(得分:5)
您可以使用以下语法设置contextPath:
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.example"/>
</bean>
答案 2 :(得分:3)
如果您在应用程序上下文中使用新版本的JAXB,则you can use something like this如果将oxm命名空间添加到xml文件中。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd">
<oxm:jaxb2-marshaller id="jaxbMarshaller" contextPath="com.example"/>
<!-- other beans -->
</beans>
我有一个使用这些程序运行的生产级别程序,所以如果您还有其他问题,请告诉我。
祝你好运。