解析 @Value 属性中的 LocalTime 字符串
Parse LocalTime string inside the @Value attribute
我的环境变量是一个带时间的字符串23:30
在我的 String Boot 应用程序中,我想自动解析它并将结果设置为变量。
我这样试过
@Value("#{ java.time.LocalTime.parse('${NIGHT_START_TIME}')}")
private LocalTime NIGHT_START_TIME;
IntelliJ 显示错误
Cannot resolve variable 'java'
这是日志
Unsatisfied dependency expressed through field 'NIGHT_START_TIME';
nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'LocalTime' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
如果我这样读取变量,我会发现值是正确的
@Value("${NIGHT_START_TIME}")
private String NIGHT_START_TIME;
有什么让它发挥作用的想法吗?
试试这个
@Value("#{ T(java.time.LocalTime).parse('${NIGHT_START_TIME}')}")
private LocalTime NIGHT_START_TIME;
您引用 class 的方式是使用 T
。
已检查 Spring Boot 2.2。6.RELEASE:
application.yml
NIGHT_START_TIME: '23:30'
服务
@Value("${NIGHT_START_TIME}")
private LocalTime NIGHT_START_TIME;
没有任何东西也能完美工作 "knee bends":)
我的环境变量是一个带时间的字符串23:30
在我的 String Boot 应用程序中,我想自动解析它并将结果设置为变量。
我这样试过
@Value("#{ java.time.LocalTime.parse('${NIGHT_START_TIME}')}")
private LocalTime NIGHT_START_TIME;
IntelliJ 显示错误
Cannot resolve variable 'java'
这是日志
Unsatisfied dependency expressed through field 'NIGHT_START_TIME';
nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'LocalTime' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public?
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
如果我这样读取变量,我会发现值是正确的
@Value("${NIGHT_START_TIME}")
private String NIGHT_START_TIME;
有什么让它发挥作用的想法吗?
试试这个
@Value("#{ T(java.time.LocalTime).parse('${NIGHT_START_TIME}')}")
private LocalTime NIGHT_START_TIME;
您引用 class 的方式是使用 T
。
已检查 Spring Boot 2.2。6.RELEASE:
application.yml
NIGHT_START_TIME: '23:30'
服务
@Value("${NIGHT_START_TIME}")
private LocalTime NIGHT_START_TIME;
没有任何东西也能完美工作 "knee bends":)