最新Spring-4.3.10和quartz-2.2.3整合示例

笔记

Spring 为简化 Quartz 的操作提供了相关支持类Quartz Scheduler 。方便我们进行任务调度的开发。网上版本大都一大抄,而且时间久远,无奈去看官方文档,还好Google翻译很给力,钻研了一下午,搞定~配置了两个定时任务,一个是直接调用方法不需要继承任何类的简单任务,另一个是功能增强的继承QuartzJobBean的定时任务,可以满足一般需求了。

jar包准备


quartz-2.2.3.jar

log4j-1.2.16.jar
log4j-core-2.8.2.jar
log4j-api-2.8.2.jar
slf4j-api-1.7.7.jar

slf4j-log4j12-1.7.7.jar

spring-core-4.3.10.jar
spring-context-support-4.3.10.jar
spring-context-4.3.10.jar

核心Spring配置文件

    
    <bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        
        <property name="targetObject" ref="mySimpleJob"/>
        
        <property name="targetMethod" value="execute"/>
        
        <property name="concurrent" value="false"/>
    bean>
    
    <bean id="cronJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        
        <property name="jobClass" value="com.cheng.utils.quartz.MyCronJob"/>
        
        <property name="durability" value="true"/>
    bean>
    
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <property name="jobDetail" ref="simpleJobDetail"/>
        
        <property name="startDelay" value="3000"/>
        
        <property name="repeatInterval" value="10000"/>
    bean>
    
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="cronJobDetail"/>
        
        <property name="cronExpression" value="*/5 * * * * ?"/>
    bean>
    
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger"/>
                <ref bean="cronTrigger"/>
            list>
        property>
    bean>

任务详情类

/**
 * 定时任务
 */
public class MyCronJob extends QuartzJobBean {
    private static int times = 0;

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        String time = sdf.format(new Date());
        System.out.println("【" + time + "】定时任务第【" + ++times + "】次执行……");
    }
}
/**
 * 简单任务
 */
@Component("mySimpleJob")
public class MySimpleJob {
    private static int times = 0;

    public void execute() {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        String time = sdf.format(new Date());
        System.out.println("【" + time + "】简单任务第【" + ++times + "】次执行……");
    }
}

你可能感兴趣的:(JavaEE实战)