Укажите пакет вместо "classesToBeBound" для spring Jaxb2Marshaller
Я пытаюсь использовать Jaxb2Marshaller для маршалирования набора классов Java с помощью spring. Я знаю, что это можно сделать, используя следующий код
<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, которое принимает подстановочные знаки. Он просто не работает с элементами без аннотации @XmlRootElement
, как и свойство contextPath. Этим нужен созданный объект factory.
Может выглядеть так:
<property name="packagesToScan">
<list>
<value>com.test.*</value>
<value>com.*.test</value>
</list>
</property>
Ответ 2
Вы можете установить contextPath со следующим синтаксисом:
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.example"/>
</bean>
Ответ 3
Если вы используете новую версию JAXB, тогда вы можете использовать что-то вроде этого в своем контексте приложения, если добавить пространство имен 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>
У меня есть программа уровня производительности, работающая с ними, поэтому дайте мне знать, если у вас есть еще вопросы.
Удачи.