代码之家  ›  专栏  ›  技术社区  ›  Koray Tugay

Spring框架-如何将目录作为资源注入?

  •  0
  • Koray Tugay  · 技术社区  · 6 年前

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

    <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。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Pavel Molchanov    6 年前

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