有没有办法轻松使用Spring Injection从文件夹位置(在部署的* .war或服务器文件夹中)获取一个或多个* .xml数据文件,并从* .xml文件中注入该数据进入Java类(例如在Web服务中)?我被其他程序员问过我是否可以这样做。
我已经看过stackoverflow上的一些链接,但到目前为止,我发现最简单的方法是将* .xml文件放入特定的文件夹位置(例如WEB-INF / classes)并使用某些东西像这样检索它们:
Thread.currentThread().getContextClassLoader.getResourceAsStream("/WEB-INF/classes/data.xml")
上述方法很简单;但是,它显然不是Spring Injection。有没有办法使用Spring Injection来做到这一点?我原以为,由于可以通过这种方式加载配置文件,因此也可以类似地加载xml数据。
感谢。
答案 0 :(得分:2)
Spring提供了一个名为Resource的类,您可以使用它将资源文件注入spring bean。所以你可以这样做:
public class Consumer {
public void setResource(Resource resource) {
DataInputStream resourceStream = new DataInputStream(resource.getInputStream());
// ... use the stream as usual
}
...
}
然后:
<bean class="Consumer">
<property name="resource" value="classpath:path/to/file.xml"/>
</bean>
,或者
<bean class="Consumer">
<property name="resource" value="file:path/to/file.xml"/>
</bean>
您也可以直接使用@Value
注释:
public class Consumer {
@Value("classpath:path/to/file.xml")
private Resource resource;
...
}