gpt4 book ai didi

java - 无法在 Spring Boot 中使用 java.util.Duration 作为 @Value 配置

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:48:32 24 4
gpt4 key购买 nike

我们无法在 Spring Boot 中使用 java.util.Duration 作为 @Value 配置。

此处显示此问题的示例项目:https://github.com/costimuraru/spring-boot-sampleSpring Boot 版本:1.5.9.RELEASE

@RestController
public class HelloController {

@Value("${mykey}")
Duration value;

@RequestMapping("/")
public String index() {
return "Greetings at " + value;
}

}

...

public class MyConfigPropertySource extends PropertySource {

MyConfigPropertySource(String name) {
super(name);
}

@Override
public Object getProperty(String path) {
return "mykey".equals(path) ? Duration.ofMinutes(1) : null;
}
}

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloController': Injection of autowired dependencies failed; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.time.Duration] to type [java.lang.String] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]

此错误完全出乎意料:找不到能够从类型 [java.time.Duration] 转换为类型 [java.lang.String] 的转换器。我们既没有在 @Value 字段中也没有在 PropertySource 的返回语句中使用 String。那么为什么 Spring Boot 试图将其转换为 String 呢?非常感谢任何帮助。

最佳答案

只需使用 Spring 表达式语言

@Value("#{T(java.time.Duration).parse('${mykey}')}")
private Duration value;

关于java - 无法在 Spring Boot 中使用 java.util.Duration 作为 @Value 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47734728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com