3 回答
TA贡献1784条经验 获得超9个赞
这是有效的:
@Value("app.users-location")
String foo; // inject "/feed/*.csv"
这也是有效的(来源):
@Value("classpath*:/feed/*.csv")
Collection<Resource> resources; // inject all resources located in this classpath
但我不知道如何将它们混合在一个注释中:即解析属性并将其与前缀一起使用classpath*:。也许这是可能的...
不管怎样,作为替代方案,我会注入这个属性app.users-location=/feed/*.csv,然后我会使用@PostConstruct它从中获取资源:
import org.springframework.core.io.support.*
@Value("${app.users-location}")
private String usersLocation;
private Collection<Resource> csvResources;
@PostConstruct
public void init(){
ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
csvResources =
Arrays.asList(patternResolver.getResources("classpath*:/" + usersLocation));
}
TA贡献1794条经验 获得超8个赞
解决方案是使用数组而不是列表:
@Value("${app.users-location}")
Resource[] resources;
@PostConstruct
public void init(){
System.out.println(resources);
}
我检查了一下,真的有效!!!
添加回答
举报