当前位置: 首页 > 知识库问答 >
问题:

Spring @Value 不识别 Interger 属性值

姬康平
2023-03-14

我正在为邮件服务配置创建一个组件

@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;
}

我的邮件属性文件看起来像

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没有自动转换这个参数?

共有2个答案

弓方伟
2023-03-14

添加@配置注释以使用外部化值。

笪栋
2023-03-14

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

但是,如果Spring无法在属性中找到该属性,则它将其值设置为其(缺失)键。这会导致一个字符串不是可解析的数字。

因此,Spring很可能无法找到email.config。port属性。-你可以证明这一点,买一个用@Value(“${email.config.port}”)注释的String字段。

 类似资料:
  • 我有一个带有javamail的spring启动应用程序,我配置了spring。属性,但似乎不需要属性来发送电子邮件。 下面是发送电子邮件的java代码 pom.xml 这里我们看到了这个错误 组织。springframework。邮政MailSendException:邮件服务器连接失败;嵌套的异常是com。太阳邮政util。MailConnectException:无法连接到主机,端口:loca

  • 问题内容: angularjs模板中的和属性之间有什么区别?如果我在使用value属性的字段上使用它,则它正常工作,但是如果我将该属性更改为它,它将停止工作。 问题答案: 根据 文档 ,采用 “角表达式,其值将绑定到 元素的属性”。 因此,当您使用时,它将被解释为一个表达式,并且被绑定到(可能是)。 对于评估表达式很有用- 与设置硬编码值相比没有优势。但是,如果您想使用硬编码值,则必须将其包含在:

  • 我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现

  • 我正在尝试从属性文件如下所示: 我有一个像下面这样的调度程序: 我一直得到以下例外情况: java.lang.IllegalArgumentExcoop:[{service.url}]不是一个有效的HTTP URL在org.springframework.web.util.UriComponentsBuilder.fromHttpUrl(UriComponentsBuilder.java:290)

  • 问题内容: 尝试在Spring 3.0.5.RELEASE中自动将属性连接到Bean ,我正在使用: config.properties: main-components.xml: MyClass: 结果,username被设置为字面值 ,因此表达式不会被解析。我对该类的其他自动关联依赖关系已设置,并且Spring不会引发任何异常。我也尝试添加,但没有帮助。 如果我将属性解析为单独的bean,然后

  • 问题内容: 从属性文件中为最终属性进行Spring注入的一个简单问题。 我有一个属性文件,要在其中存储文件路径。通常,当我使用属性文件时,我会使用类似以下的方法来设置类属性: 然后在我spring.xml我会像这样: 这很好用,很简单,并且使代码简洁美观。但是我不确定在尝试将属性值注入最终类属性时使用的最整洁的模式是什么? 显然是这样的: 不管用。还有另一种方法吗? 问题答案: 将值注入最终字段的