Spring quartz在作定时任务时使用起来很方便,较java的timer使用起来更加高效,管理起来快捷,下面是详细配置
<?xml version="1.0" encoding="utf-8"?>
<beans default-autowire="byName"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- =========================== 要调用的工作类 ================================ -->
<!-- 处理日志文件任务 -->
<bean id="exeLogFileJob" class="com.wgzhl.dao.manager.job.impl.ExeLogFileJobImpl"></bean>
<!-- 创建表任务 -->
<bean id="tableManagerJob" class="com.wgzhl.dao.manager.job.impl.TableManagerJobImpl"></bean>
<!-- ===================== 定义调用对象和调用对象的方法 ================================= -->
<!-- 迁移历史数据调用对象及方法 -->
<bean id="exeLogFileJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="exeLogFileJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>exeLoadLogFile</value>
</property>
</bean>
<!-- 创建表任务调用对象及方法 -->
<bean id="createAppLogTableTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="tableManagerJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>createAppLogTable</value>
</property>
</bean>
<!-- ================== 定义触发时间 ================== -->
<!-- 迁移历史数据 触发时间 -->
<bean id="doExeLogFileJobTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="exeLogFileJobTask"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>00 01 * * * ?</value>
<!--<value>
0 0 * * * ? 每小时整点触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
</value>
-->
</property>
</bean>
<!-- 创建表 触发时间 -->
<bean id="doCreateAppLogTableTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="createAppLogTableTask"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>00 01 09 * * ?</value>
<!--<value>
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
</value>
-->
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doExeLogFileJobTime"/>
<ref bean="doCreateAppLogTableTime"/>
</list>
</property>
</bean>
</beans>
Spring quartz使用详解
最新推荐文章于 2022-07-04 11:34:39 发布