gpt4 book ai didi

java - Spring @Value 无法识别 Interger 属性值

转载 作者:行者123 更新时间:2023-12-02 06:15:22 24 4
gpt4 key购买 nike

我正在创建一个用于邮件服务配置的组件>>

@Component
@PropertySource("classpath:mail.properties")
public class Mail {

@Value("${email.config.host}")
private String host;

@Value("${email.config.port}")
private Integer port;

@Value("${email.config.username}")
private String username;
}

我的 mail.properties 文件看起来像 >>

email.config.host=smtp.gmail.com
email.config.port=587
email.config.username=idontknowmyname@gmail.com
email.config.password=password

我尝试获取端口值,但遇到问题>

java.lang.NumberFormatException: For input string: "${email.config.port}"

是的,我知道这应该是一个整数值,但我的@Value注释转换**为字符串。所以我尝试了这个:

@Value("#{ T(java.lang.Integer).parseInt('${email.config.port}')}")

...得到相同的。

主机、用户名、密码等。加载正常!如何获取我的端口值?为什么PropertySource没有自动转换这个参数?

最佳答案

如果字符串表示整数,Spring 能够将这些值从字符串转换为整数。

但是,如果 spring 无法在属性中找到该属性,则会将其值设置为其(丢失的)键。这会产生一个无法解析数字的字符串。

因此 Spring 很可能无法找到您的 email.config.port属性(property)。 - 你可以证明这一点,购买一个带有 @Value("${email.config.port}") 注释的字符串字段.

关于java - Spring @Value 无法识别 Interger 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893992/

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