Injecter JAXBContext dans spring

je suis en train d'injecter un JAXBContext dans le contexte d'application du printemps, par:

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

it Lakes an exception:

Pas de correspondance usine méthode: l'usine de méthode newInstance'

Et j'ai aussi essayer :

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

Et Il déclenche une exception:

javax.XML.lier.JAXBException: "com.paquet" ne contient pas ObjectFactory.de la classe ou de jaxb.index Je n'ai mis un jaxb.fichier d'index à l'intérieur du paquet "COM.paquet "et a une seule ligne "MyClassName" dans le fichier.

18
demandé sur skaffman 2011-03-22 08:18:59

3 réponses

la réponse de@Tomasz est la solution que je recommande, mais si vous voulez rester avec JAXBContext, alors la raison pour laquelle votre premier exemple a échoué est que le static getInstance() méthode JAXBContext ne pas prendre un seul Class argument, il faut un vararg liste d'entre eux. Vous devez donc injecter une Liste, pas une seule classe:

<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>
14
répondu skaffman 2016-03-30 22:38:13
<?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>

Voir 8.4. XML basés sur les schémas de Configuration. Yu aura aussi besoin de spring-oxm sur votre chemin de classe.

11
répondu Tomasz Nurkiewicz 2011-03-22 09:08:47

ceci résoudra le problème pour jaxb.fichier index ou problème ObjectFactory dans l'env.du printemps donnez la valeur du paquet où les classes sont celles qui génèrent le xml

entrer le code ici'

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="packagesToScan" >
            <value>com.adarsh.spring.integration.entities</value>
        </property>
   </bean>`
2
répondu Adarsh Kumar 2015-03-26 18:44:31