java - 从@Scheduled fixedRate 的属性文件中获取值时出错
问题描述
private static final String CONSTANT = (p.getProperty("MILLISECONDS_OF_12_HOURS"));
@Scheduled(fixedRateString = CONSTANT)
public void clearCache() throws IOException {
if(!rrcodeService.cachedAccessGroups.isEmpty()) {
for (Entry<String, CachedAccessGroups> entry : rrcodeService.cachedAccessGroups.entrySet()) {
String key = entry.getKey();
CachedAccessGroups accessGroups = rrcodeService.cachedAccessGroups.get(key);
if(now.getTime() - accessGroups.getCachedDate().getTime()> Integer.parseInt(p.getProperty("EVICT_CACHE"))) {
rrcodeService.cachedAccessGroups.remove(key);
}
}
}
}
MILLISECONDS_OF_12_HOURS 的值是在外部属性文件中设置的。我正在尝试将该值设置为 FixedRateString。但是它的抛出错误说“注释属性Scheduled.fixedRateString的值必须是一个常量表达式”任何帮助将不胜感激..谢谢!
解决方案
您可以从上下文中注入值。就像是
@Scheduled(fixedRate = "${propertykey.myRate}", initialDelay=1000)
public void clearCache() throws IOException {
.....
}
并在外部定义属性文件(application.properties YAML)
propertykey:
myRate: 5000
请记住,fixedRate
在上面的示例中需要一个long
推荐阅读
- asp.net - Identityserver4 访问级别 实践
- c++ - 有条件的使用声明
- java - Android FirebaseML - 本地模型未注册:
- python - 错误:尝试替换为 backslah 时,位置 0 处的错误转义(模式结束)
- python - 如何使用过滤功能识别特殊字符的索引
- java - 如何在 AWS Device Farm 中运行 maven 命令
- android - simpli 从 esspresso android 中的自定义视图获取视图
- amazon-web-services - Docker swarm 工作节点无法为其托管的 nginx 服务提供服务
- spring-boot - 无法为 Spring Boot 2 应用程序中的拦截器添加配置 WebMvcConfigurer
- javascript - react.js 根块的不同内容