web-dev-qa-db-ja.com

JAXBContextを春に注入します

JAXBContextを春のアプリケーションコンテキストに挿入しようとしています。

<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.in​​dexが含まれていませんパッケージ「com.package」内にjaxb.in​​dexファイルを配置し、ファイルに「MyClassName」という1行が含まれています。

19
yzandrew

@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>
15
skaffman

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が必要です。

11

これにより、jaxb.in​​dexファイルの問題またはspringenvのObjectFactoryの問題が解決されます。 xmlを生成するクラスがクラスであるパッケージの値を提供します

ここにコードを入力してください `

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