Spring计划任务:在XML配置中指定时区

时间:2017-03-29 14:27:03

标签: java spring scheduled-tasks scheduler scheduling

是否可以使用以下注释在Java配置中实现时区设置?

@Scheduled(cron = "0 0 8,20 * * *", zone = "GMT-3")

我在XML定义中看不到任何其他属性,但也许有一种解决方法可以实现预期的目标。

示例配置:

<task:scheduler id="myScheduler" pool-size="2" />
<bean class="MyClass"
    id="myBean" />
<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="myBean" method="gprs" fixed-rate="300000" />
    <task:scheduled ref="myBean" method="reporteGpsGprs" cron="0 0 8,20 * * *" />
</task:scheduled-tasks>

当前的Spring依赖关系:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.2.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.2.2.RELEASE</version>
    </dependency>

2 个答案:

答案 0 :(得分:2)

有可能,您可以使用触发器的属性:

<task:scheduler id="myScheduler" pool-size="2" />
<bean class="MyClass" id="myBean" />
<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="myBean" method="reporteGpsGprs" trigger="myTriggerId" />
</task:scheduled-tasks>

并定义一个 org.springframework.scheduling.support.CronTrigger ,如下所示:

<bean id="myTriggerId" class="org.springframework.scheduling.support.CronTrigger">
    <constructor-arg name="expression" value="0 0 8,20 * * *"/>
    <constructor-arg name="timeZone" value="GMT-3"/>
</bean>

答案 1 :(得分:1)

不幸的是,看看xsd我没有看到任何其他属性来定义xml中的时区。您可以使用refmethod属性来定义返回计划的工厂类。

参考:http://www.springframework.org/schema/task/spring-task-4.0.xsd