我正在尝试将 JAXBContext
注入(inject) Spring 应用程序上下文,通过:
<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
<constructor-arg type="java.lang.Class" value="com.package.MyClassName"/>
</bean>
抛出异常:
No matching factory method found: 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" doesnt contain ObjectFactory.class or jaxb.index I did put a jaxb.index file inside the package "com.package" and has a single line "MyClassName" in the file.
最佳答案
@Tomasz 的答案是我推荐的解决方案,但如果您想坚持使用 JAXBContext
,那么您的第一个示例失败的原因是 static getInstance()
method on JAXBContext
不采用单个 Class
参数,它采用它们的可变参数列表。所以你需要注入(inject)一个列表,而不是一个类:
<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>
关于spring - 将 JAXBContext 注入(inject) spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5387148/