java - 如何在 Spring 属性中扩展通配符?
问题描述
我正在开发 Spring Boot 应用程序,我想注入这样的资源集合:
@Value("${app.users-location}")
Collection<Resource> csvResources;
在里面application.properties
我写了以下内容:
app.users-location=/feed/*.csv
但它没有按预期工作:
对于这种情况,我希望看到 5 个类型元素的集合Resource
。
我怎样才能实现它?
解决方案
这是有效的:
@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));
}
推荐阅读
- laravel - 如何在刀片中使用带有参数的翻译字符串?(Laravel 5.8)
- c - 我收到一个错误“警告:从 'char *' 分配给 'char' 使指针从没有强制转换的整数”
- terraform - 如何在 terraform 模块中检索我的安全组 ID
- javascript - 事件监听器“记得”之前获取的数据?
- r - 如何使来自`map_dfc()`的“新名称”消息静音?
- c++ - 如何在c ++中将lua函数从一个lua_State复制到另一个lua_State
- mongodb - MongoDB 日期比较不适用于 $date
- c# - 在 Xamarin Forms 中重新启动活动时保持 Switch 值
- python - 如何使用 mplfinance 在绘图的其他线条上方显示蜡烛?
- unity-container - 错误一个实体对象不能被多个 IEntityChangeTracker 实例引用