spring定时器使用(quartz 2.2, spring 4.3)

版本:quartz 2.2
spring 4.3

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
           http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"
    >

    <!-- ======================= scheduler ========================= -->
    <bean id="importTourGroupsScheduler" class="com.yimayhd.carpool.schedule.ImportTourGroupsScheduler" />
    <!-- ======================= job detail ========================= -->

    <bean id="importTourGroupsSchedulerBean"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="importTourGroupsScheduler"></property>
        <property name="targetMethod" value="execute"></property>
        <property name="concurrent" value="false" />
    </bean>
        <!-- ======================= quartz Cron Trigger ========================= -->

    <bean id="importTourGroupsSchedulerCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail"  >
                <ref bean="importTourGroupsSchedulerBean"/>
        </property>
        <property name="cronExpression" value="${scheduler.tourGroup}" />
    </bean>

    <!-- ======================= Scheduler Factory ========================= -->
    <bean id="schedulerFactoryBean"
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="importTourGroupsSchedulerCronTrigger" />
            </list>
        </property>
    </bean>

</beans>                
public class ImportTourGroupsScheduler {
    private Logger logger = LoggerFactory.getLogger(ImportTourGroupsScheduler.class);

    @Autowired
    private TourGroupManager tourGroupManager;
    public void execute() {
        doWork();
    }

    private void doWork() {
        logger.info(" import tourGroups from erp " + JSON.toJSONString(new Date()));
        try {
            logger.info("tourGroupManager.importTourGroup========== start=============");
            BaseResult<TourGroupDO> baseResult = tourGroupManager.importTourGroupFromERP();
            if (!baseResult.isSuccess()) {
                logger.error("import tourGroups from erp to carcar failed!");
            }
            logger.info("tourGroupManager.importTourGroup========== end=============");
        } catch (Exception e) {
            logger.error("doWork", e);
        }
    }

}

如果spring是4.1以下,trigger的配置就需要替换为

<bean id="cacheBoothSchedulerCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="cacheBoothSchedulerBean"></property>
        <property name="cronExpression" value="${scheduler.cache.booth}" />
</bean>

这是因为spring4.1以上的版本中,去掉了CronTriggerBean类,而且jobDetail由类改成了接口,所以jobDetail的实例化方式也需要修改。

4.1以下版本

public class CronTriggerBean extends CronTrigger implements JobDetailAwareTrigger, BeanNameAware, InitializingBean {
    private static final Constants constants = new Constants(CronTrigger.class);
    private JobDetail jobDetail;
    public CronTriggerBean() {
    }

   ...
 }

public class CronTrigger extends Trigger {
    public void setCronExpression(String cronExpression) throws ParseException {
        TimeZone origTz = this.getTimeZone();
        this.cronEx = new CronExpression(cronExpression);
        this.cronEx.setTimeZone(origTz);
    }
    ...
}

public class JobDetail implements Cloneable, Serializable {
   ...
    public JobDetail() {
        this.group = "DEFAULT";
        this.volatility = false;
        this.durability = false;
        this.shouldRecover = false;
        this.jobListeners = new LinkedHashSet();
        this.key = null;
    }
 ...
 }

4.1以上版本

public class CronTriggerFactoryBean implements FactoryBean<CronTrigger>, BeanNameAware, InitializingBean {
   ...
    private JobDetail jobDetail;
    private String cronExpression;
    private CronTrigger cronTrigger;
    ...

}

public interface JobDetail extends Serializable, Cloneable {
    ...
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步一点_点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值