如何在 Spring 属性中扩展通配符?

我正在开发 spring boot 应用程序,我想像这样注入资源集合:

@Value("${app.users-location}")
Collection<Resource> csvResources;

我在里面application.properties写了以下内容:

app.users-location=/feed/*.csv

但它没有按预期工作:

http://img4.mukewang.com/64647b570001573202200160.jpg

对于那种情况,我希望看到 Collection of 5 elements of type Resource

我怎样才能实现它?



暮色呼如
浏览 286回答 3
3回答

千万里不及你

这是有效的:@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;@PostConstructpublic void init(){&nbsp; &nbsp; ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();&nbsp; &nbsp;&nbsp; &nbsp; csvResources =&nbsp;&nbsp; &nbsp; Arrays.asList(patternResolver.getResources("classpath*:/" + usersLocation));}

慕工程0101907

好像当前版本不支持

幕布斯7119047

解决方案是使用数组而不是列表:@Value("${app.users-location}")Resource[] resources;@PostConstructpublic void init(){    System.out.println(resources);}我检查了一下,真的有效!!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java