Ввести JAXBContext в spring

178
22

Я пытаюсь ввести JAXBContext в контекст приложения spring, путем:


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

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


Не найдено соответствующего метода factory: factory method '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".


спросил(а) 2021-01-19T20:38:42+03:00 2 месяца, 3 недели назад
1
Решение
161

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

<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>

ответил(а) 2021-01-19T20:38:42+03:00 2 месяца, 3 недели назад
143

Вы пробовали 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 для вашего пути к классам.

ответил(а) 2021-01-19T20:38:42+03:00 2 месяца, 3 недели назад
76

это решит проблему для 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>`

ответил(а) 2021-01-19T20:38:42+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема