Quartz 定时器的使用之 XML 配置方式 (二)

最近发现一个更好的配置定时器的方法, 废话不多说,开搞:
1. 导入 jar 包,这里使用的 quartz 包是 spring 的所以无需引入其他 jar
2. 在你的配置文件目录下 创建一个 xml 文件
下面就是代码:
定义触发器管理器 我是这么叫

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <!-- <property name="startupDelay" value="180"/>  启动服务器后延迟启动定时任务 -->
        <property name="triggers">
            <list>
                <ref bean="trigger1" />
                <ref bean="trigger2" />
                <ref bean="trigger3" />
                <ref bean="trigger4" />
            </list>
        </property>
        <property name="autoStartup" value="true" /><!--这里配置自动启动-->
    </bean>

注册 triggerbean

<!-- 绑定 begin -->
    <bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail2" />
        <property name="cronExpression" value="*/10 * * * * ?" /><!-- 每隔10秒钟触发一次 -->
    </bean>

定义具体的 jobDetail

<bean id="sc_timerJobDetail2"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref=job1Class" />
        <property name="targetMethod" value="execute" />
        <property name="concurrent" value="false" />
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>

定义具体的 Job 类 这个类是咱们自己写的 就是上面的 job1Class
job1ClassProperty 就是这个类的成员属性啦

<bean id="job1Class"
        class="xyz.spacexplore.Job1Class">
        <property name="job1ClassProperty" ref="job1ClassProperty"></property>
    </bean>

===========================================
现在看下各个引用到的 spring 的类,主要看他们的一些成员属性:
SchedulerFactoryBean

private Class<? extends SchedulerFactory> schedulerFactoryClass = StdSchedulerFactory.class;

    private String schedulerName;

    private Resource configLocation;//也是配置文件位置

    private Properties quartzProperties;//quartz的配置文件 这个没用过


    private Executor taskExecutor;

    private DataSource dataSource;

    private DataSource nonTransactionalDataSource;


    private Map<String, ?> schedulerContextMap;

    private ApplicationContext applicationContext;//上下文对象

    private String applicationContextSchedulerContextKey;

    private JobFactory jobFactory;

    private boolean jobFactorySet = false;


    private boolean autoStartup = true;//是否自动启动

    private int startupDelay = 0;//设置延迟启动时长

    private int phase = Integer.MAX_VALUE;

    private boolean exposeSchedulerInRepository = false;

    private boolean waitForJobsToCompleteOnShutdown = false;


    private Scheduler scheduler;

CronTriggerBean

    private static final Constants constants = new Constants(CronTrigger.class);


    private JobDetail jobDetail;//这个就不用说了

    private String beanName;//更不用说了

    private long startDelay = 0;//也是延迟启动

MethodInvokingJobDetailFactoryBean

    private static Class<?> jobDetailImplClass;//job的具体实现类

    private static Method setResultMethod;
        private String name;

    private String group = Scheduler.DEFAULT_GROUP;

    private boolean concurrent = true;

    private String targetBeanName;

    private String[] jobListenerNames;

    private String beanName;

    private ClassLoader beanClassLoader = ClassUtils.getDefaultClassLoader();

    private BeanFactory beanFactory;

    private JobDetail jobDetail;
    //静态成员类
public static class MethodInvokingJob extends QuartzJobBean
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值