Подтвердить что ты не робот

Укажите пакет вместо "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).

Кто-нибудь знает способ сделать это или любой другой способ, который не требует, чтобы я перечислял все классы. любая помощь будет оценена!

Спасибо.

4b9b3361

Ответ 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>

У меня есть программа уровня производительности, работающая с ними, поэтому дайте мне знать, если у вас есть еще вопросы.

Удачи.