我正在创建一个用于邮件服务配置的组件>>
@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.us[email protected] /cdn-cgi/l/email-protection
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
财产。 - 你可以证明这一点,购买一个带有注释的字符串字段@Value("${email.config.port}")
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)