【问题标题】:Spring Framework - How to inject a Directory as a Resource?Spring Framework - 如何将目录作为资源注入?
【发布时间】:2018-06-15 18:00:28
【问题描述】:

这是我当前的配置,可以正常工作:

<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,因为传递的路径未解析为目录。

【问题讨论】:

    标签: java spring io path


    【解决方案1】:

    你需要使用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 ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 2011-03-30
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多