Spring计划任务:在XML配置中指定时区
Spring Scheduled tasks: specifying time zone in XML configuration
是否可以像 Java 中那样使用以下注释在 XML 配置中实现时区设置?
@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>
不幸的是,查看 xsd 我没有看到任何其他 属性 来定义 xml 中的时区。您可以做的是使用 ref
和 method
属性来定义工厂 class,returns 计划。
参考:http://www.springframework.org/schema/task/spring-task-4.0.xsd
有可能,你可以使用触发器的属性:
<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>
是否可以像 Java 中那样使用以下注释在 XML 配置中实现时区设置?
@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>
不幸的是,查看 xsd 我没有看到任何其他 属性 来定义 xml 中的时区。您可以做的是使用 ref
和 method
属性来定义工厂 class,returns 计划。
参考:http://www.springframework.org/schema/task/spring-task-4.0.xsd
有可能,你可以使用触发器的属性:
<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>