spring集成Quartz时区问题造成任务晚执行八小时

项目中在Spring中集成了Quartz,配置的每日凌晨执行的定时任务都是到了八点多才执行,经过一番查找,可能是时区问题造成的。
  • 一种解决办法是在JVM启动参数中增加 --Duser.timezone=GMT+08
  • 另一种办法是在配置文件中增加timeZone的配置
改JVM参数的方式,一但项目迁移实施人员可能会忘记改,所以决定再代码里做手脚。
 
1、获取一个TimeZone,使用java.util.TimeZone.getTimeZone(String ID)获取指定的TimeZone,ID有两种形式,一种为完整名称例如“ America/Los_Angeles”、“Asia/Shanghai”,或者一个自定义ID比如GMT-8:00”
Spring配置如下
<bean id="timeZone" class="java.util.TimeZone" factory-method="getTimeZone">
  <constructor-arg>
    <value>GMT+8:00</value>
  </constructor-arg>
</bean>
2、给TriggerBean注入
 <bean id="testJob" class="org.eu.raybit..jobs.TestJob" />
 <bean id="testJobMethod"   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
   <property name="targetObject">
     <ref bean="testJob" />
   </property>
   <property name="targetMethod">
     <value>execute</value>
   </property>
</bean>
<bean id="testJobTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">   <property name="jobDetail" ref="testJobMethod"></property>   <property name="cronExpression" value="0 0 0 1/1 * ? "></property>   <property name="timeZone" ref="timeZone"/> </bean>

 

转载于:https://www.cnblogs.com/raym/p/9473539.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值