spring - 将 JAXBContext 注入(inject) spring

标签 spring jaxb code-injection

我正在尝试将 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/

相关文章:

bash - 可以在此代码中使用 eval 完成代码注入(inject)吗?

java - 初始化类时使用 Spring 属性

java - Spring NamedParameterJDBCTemplate 重用Prepared Statements

java - 在 Jersey 中处理 Null XML 负载

java - JAXB XJC 代码生成 - Marshaller 生成的 xml 中缺少 "schemaLocation"

java - 如何在 spring 项目中正确注入(inject) @Autowired 依赖而不使用 getBean?是否可以?

java - Spring MVC 404错误http请求

java - 为 dbcp2 设置 spring bean 配置给出 "PoolableConnectionFactory not linked to pool. Calling setPool()"

java - 强制转义 Spring 中 XML 编码中的特殊字符

macos - 有人在雪豹上使用 mach_inject 吗?