【问题标题】:Spring expression language (SpEL): parse String to intSpring 表达式语言 (SpEL):将 String 解析为 int
【发布时间】:2012-05-24 01:54:50
【问题描述】:

我有一个(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


    【解决方案1】:

    看起来不像,例如看看开发人员如何在这里创建它们:https://jira.springsource.org/browse/SPR-8716

    一个稍微短一点的版本可能是

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

    【讨论】:

    • 是否可以为注释做这样的事情? @Size((min = "#{new Integer(applicationProperties[size.min])}") 私有整数大小;
    • @luksmir 我不知道。最好问一个新问题
    【解决方案2】:

    另一种方法是使用 util 命名空间来定义一个属性 bean, ... xmlns:util="http://www.springframework.org/schema/util" ... http://www.springframework.org/schema/utilhttp://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;
    

    context 生成的 spring util properties bean 会在赋值之前进行解析和转换。

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2014-01-14
      • 2011-10-04
      • 2013-12-10
      • 1970-01-01
      • 2017-07-20
      • 2014-02-19
      • 2012-02-22
      • 1970-01-01
      相关资源
      最近更新 更多