You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@Value注解读取配置创建ZoneId对象报错问题咨询

问题解决:@Value结合ZoneId的正确用法

你的语法确实有误,问题出在SpEL表达式的写法上:你直接把配置键app.report.time-zone作为字符串传给ZoneId.of(),这相当于让ZoneId去解析app.report.time-zone这个字符串作为时区ID,而不是读取配置里的+00:00值,这显然不是合法的时区标识,所以触发了解析错误。

正确的写法是先用${}获取配置中的实际值,再传给ZoneId.of(),修改后的代码如下:

@Value("#{ java.time.ZoneId.of('${app.report.time-zone}') }")
ZoneId reportZoneId;

另外补充一个优化点:如果你的配置值都是+00:00这类时区偏移量格式,也可以直接用ZoneOffset类型接收,写法更简单:

@Value("${app.report.time-zone}")
ZoneOffset reportZoneOffset;

内容的提问来源于stack exchange,提问作者ka3ak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:14:56