<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'
答案 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());
}