当前位置: 首页 > 面试题库 >

如何使用Spring 3.0表达式语言参数化@Scheduled(fixedDelay)?

公西宏毅
2023-03-14
问题内容

当使用Spring 3.0功能注释计划任务时,我想fixedDelay从配置文件中设置as参数,而不是像当前那样将其硬连接到任务类中。

@Scheduled(fixedDelay = 5000)
public void readLog() {
        ...
}

不幸的是,使用Spring表达式语言(SpEL)的方法似乎@Value返回了一个String对象,该对象又不能按照fixedDelay参数要求自动装箱成长值。


问题答案:

我想@Scheduled注释是毫无疑问的。因此,可能适合您的解决方案是使用task- scheduledXML配置。让我们考虑以下示例(从Spring
doc
复制):

<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="someObject" method="readLog" 
               fixed-rate="#{YourConfigurationBean.stringValue}"/>
</task:scheduled-tasks>

…或者如果从String到Long的转换不起作用,则类似以下内容:

<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="someObject" method="readLog"
            fixed-rate="#{T(java.lang.Long).valueOf(YourConfigurationBean.stringValue)}"/>
</task:scheduled-tasks>

同样,我还没有尝试过这些设置中的任何一个,但是我希望它可以对您有所帮助。



 类似资料:
  • 我对Spring还不熟悉,对它能做些什么还只是初步了解。 在这种情况下,我需要使用注释设置一个循环任务。速率被指定为对象中的成员字段,该对象被传递给封装表示任务的方法的类。 我使用了允许访问配置或环境的机制,例如;这很有效。 我不知道如何做的是将对象中的值插入到中。 例如: 当然,上面的代码不起作用,我只是举一个例子来说明我要做的事情。 如有任何建议,将不胜感激。

  • JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。 一个简单的语法 典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可: <jsp:setProperty name="box" propert

  • 我需要使用属性文件中的值(如果存在)或默认值(如果没有)参数化方法。 我们可以通过以下方式从配置文件属性参数化: 但是如果属性不存在,我们将有一个运行时异常。 我尝试使用默认值的bean,但没有成功: 如何避免这种情况并传递默认值?

  • 本文章将介绍Thymeleaf Spring表达式语法中的概念。 Spring Expression Language(简称SpEL)是一种强大的表达式语言,支持在运行时查询和操作对象图。 语言语法类似于Unified EL,但提供了额外的功能,特别是方法调用和基本的字符串模板功能。 Spring表达式语言的创建旨在为Spring社区提供单一支持的表达式语言。 它的语言特性是由Spring项目中的

  • 主要内容:示例,SpEL对Bean定义的支持,SpEL中的运算符,SpEL中的变量Spring Expression Language(简称 SpEL)是一种功能强大的表达式语言,支持运行时查询和操作对象图 。表达式语言一般是用最简单的形式完成最主要的工作,以此减少工作量。 Java 有许多可用的表达式语言,例如 JSP EL,OGNL,MVEL 和 JBoss EL,SpEL 语法类似于 JSP EL,功能类似于 Struts2 中的 OGNL,能在运行时构建复杂表达式、存取

  • Handlebars 表达式是 Handlebars 模板的基本单位。 您可以在 {{mustache}} 中单独使用它们或将它们用作 Handlebars 助手代码, 或将其用作 Hash 参数中的值。 基本用法 Handlebars 表达式是一些以双花括号 {{}} 括起来的内容。在以下的模版中,firstname 是一个被声明为表达式的变量,且被双花 括号括起来。template <p>{{