Spring 表达式语言(SpEL):将 String 解析为 int

问题描述 投票:0回答:2

我有一个以分钟为单位表示的(

String
)属性,我想在进行一些算术并将其注入到我的 Spring bean 之前将其转换为
int
。现在我有这个 SpEL 表达式:

#{T(java.lang.Integer).parseInt(myProperties['MIN_TIME']) * 60 * 1000}

其中

myProperties
是一个简单的
java.util.Properties
bean。

并不是说我对这个表达式特别恼火,但尽管如此:SpEL 是否有一种更漂亮的内置方法来将字符串解析为数值?

谢谢!

java spring spring-el
2个回答
18
投票

看起来不像,例如看看开发人员如何在这里创建它们:https://github.com/spring-projects/spring-framework/issues/13358

稍微短一点的版本可能是

#{new Integer(myProperties['MIN_TIME']) * 60 * 1000}

0
投票

另一种方法是使用 util 命名空间来定义属性 bean, ... xmlns:util="http://www.springframework.org/schema/util" ... http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd ...

<util:properties id="apiProperties"
    location="classpath:/api.properties" />

然后使用属性 bean 的替代语法

@Value("#{apiProperties['api.orders.pingFrequency']}")
private Integer pingFrequency;

上下文生成的spring util properties bean将在赋值之前进行解析和转换。

© www.soinside.com 2019 - 2024. All rights reserved.