将XML数据文件弹簧注入Java类

时间:2014-07-04 02:39:37

标签: java xml spring jboss

有没有办法轻松使用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数据。

感谢。

1 个答案:

答案 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;

    ...
}