我有一个以分钟为单位表示的(
String
)属性,我想在进行一些算术并将其注入到我的 Spring bean 之前将其转换为 int
。现在我有这个 SpEL 表达式:
#{T(java.lang.Integer).parseInt(myProperties['MIN_TIME']) * 60 * 1000}
其中
myProperties
是一个简单的 java.util.Properties
bean。
并不是说我对这个表达式特别恼火,但尽管如此:SpEL 是否有一种更漂亮的内置方法来将字符串解析为数值?
谢谢!
看起来不像,例如看看开发人员如何在这里创建它们:https://github.com/spring-projects/spring-framework/issues/13358
稍微短一点的版本可能是
#{new Integer(myProperties['MIN_TIME']) * 60 * 1000}
另一种方法是使用 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将在赋值之前进行解析和转换。