我正在为邮件服务配置>>
创建一个组件@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}"
是的,我知道这应该是一个Integer值,但我的@Value注释转换为String。所以我尝试了这个:
@Value("#{ T(java.lang.Integer).parseInt('${email.config.port}')}")
......也一样。
主机,用户名,密码等。加载好! 我怎样才能获得我的端口值? 为什么PropertySource没有自动转换此参数?
答案 0 :(得分:1)
如果字符串表示整数,则Spring能够将这些值从字符串转换为整数。
但是如果spring无法在属性中找到属性,则将其值设置为其(缺失)键。这导致字符串不是可解析的数字。
因此Spring可能无法找到您的email.config.port
属性。 - 您可以证明这一点,购买带有@Value("${email.config.port}")
注释的字符串字段。
答案 1 :(得分:-2)
添加@Configuration
注释以使用外部化值。