java - Spring Framework - 如何将目录作为资源注入?
问题描述
这是我当前的配置,可以正常工作:
<bean id="foo"
class="foo.Foo">
<constructor-arg>
<list value-type="org.springframework.core.io.Resource">
<value>classpath:bar/01.lookup</value>
<value>classpath:bar/02.lookup</value>
<value>classpath:bar/03.lookup</value>
</list>
</constructor-arg>
</bean>
但是,我有数百个这样的 .lookup 文件,所以我在类中创建了一个构造函数,Foo
它需要一个文件夹的路径,而我天真的方法是:
<bean id="foo"
class="foo.Foo">
<constructor-arg>
<bean class="org.springframework.core.io.FileSystemResource">
<constructor-arg>
<value>classpath:bar</value>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
我希望调用listFiles
并遍历所有.lookup
文件,但这似乎不起作用,并且我收到 NullPointerException,因为传递的路径未解析为目录。
解决方案
您需要使用PathMatchingResourcePatternResolver
,请参阅文档:
https ://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html
代码示例:
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("classpath*:bar/*.lookup") ;
for (Resource resource: resources){
... process resource here ...
}
推荐阅读
- android - Android 片段高度
- java - 使用 Eclipse 手动导出 EAR 文件
- regex - 计算 sed 中的字符串长度
- c - 如何在 Linux 中获取显示设备名称
- symfony - 为什么当我运行 phpunit 时在测试环境中构建 symfony 容器,而 .env 将 APP_ENV 定义为 dev?
- sql - 按另一列中的结果计算唯一标识符
- asp.net-mvc - 我怎样才能使我的 MVC 应用程序内幕能够
- datatable - 如何使用 jquery 过滤数据表并添加值
- python - Django 查询 Select X from Table where Y = Z
- .net - .net 核心应用程序是否存在依赖于框架的部署并添加了 nuget 包?