IOUtils静态方法没有匹配的工厂方法

时间:2014-04-28 09:03:50

标签: java spring

<bean id="testMessage"
    class="org.apache.commons.io.IOUtils" factory-method="toString" >
    <constructor-arg type="java.io.InputStream" value="classpath:data/exampleMessage.xml" />
</bean>

任何人都知道为什么在Spring中从Apache IOUtils调用这个静态toString方法时会出现这个错误?

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'testMessage' defined in class path resource [data.xml]: No    
matching factory method found: factory method 'toString'

2 个答案:

答案 0 :(得分:0)

从Spring文档章节3.3.1.3开始,将参数传递给静态工厂方法是有效的:

  

如您所见,bean定义中指定的构造函数参数将用作作为参数传递给ExampleBean的构造函数。

我认为价值classpath:data/exampleMessage.xml不是InputStream,而是InputStreamSource,而Spring Documentation不是InputStream

答案 1 :(得分:0)

您可以使用以下代码在Java Config中实现您的需求(假设您使用的是Spring 3 +):

@Bean
public String testMessage() {
   final Resource resource = new ClassPathResource("data/exampleMessage.xml");
   return IOUtils.toString(resource.getInputStream());
}