Введите JAXBContext в весну - PullRequest
19 голосов
/ 22 марта 2011

Я пытаюсь внедрить JAXBContext в контекст приложения Spring:

<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
  <constructor-arg type="java.lang.Class" value="com.package.MyClassName"/>
</bean>

Выдает исключение:

Не найден соответствующий фабричный метод: фабричный метод'newInstance'

И я также пытаюсь:

<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
  <constructor-arg type="java.lang.String" value="com.package"/>
</bean>

И он выдает исключение:

javax.xml.bind.JAXBException:«com.package» не содержит ObjectFactory.class или jaxb.index. Я поместил файл jaxb.index в пакет «com.package» и в нем есть одна строка «MyClassName».

Ответы [ 3 ]

15 голосов
/ 22 марта 2011

@ Ответ Томаша - это решение, которое я бы порекомендовал, но если вы хотите придерживаться JAXBContext, то причина, по которой ваш первый пример не удался, заключается в том, что метод static getInstance() для JAXBContext не делаетНе принимайте один Class аргумент, он принимает их список.Поэтому вам нужно добавить список, а не один класс:

<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
  <constructor-arg value-type="java.lang.Class">
    <list>
       <value>com.package.MyClassName</value>
    </list>
  </constructor-arg>
</bean>
11 голосов
/ 22 марта 2011

Вы пробовали Spring OXM? Последняя строка важна, пространства имен только для справки:

<?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-2.5.xsd
    http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-1.5.xsd">

    <oxm:jaxb2-marshaller id="marshaller" contextPath="com.package"/>
</beans>

См. 8.4. Конфигурация на основе XML-схемы . Ю также понадобится spring-oxm на вашем пути к классам.

2 голосов
/ 26 марта 2015

это решит проблему с файлом jaxb.index или проблемой ObjectFactory в Spring Env.укажите значение пакета, в котором находятся их классы, которые генерируют код xml

, введите здесь `

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="packagesToScan" >
            <value>com.adarsh.spring.integration.entities</value>
        </property>
   </bean>`
...