zoukankan      html  css  js  c++  java
  • spring Quartz多个定时任务的配置

    Quartz多个定时任务的配置

    1,配置文件与spring整合,需要在spring 的总配置中一入或者在web.xml中spring监听中加上

    ztc_cp-spring-quartz.xml

    注:定时器出触发的时间,根据需要自己设置

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xsi:schemaLocation="  
    5.     http://www.springframework.org/schema/beans  
    6.     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">  
    7.   
    8.   
    9.   
    10.     <!-- spring自动任务调度器配置 -->  
    11.   
    12.   
    13.     <!-- 要调用的工作类 -->  
    14.     <bean id="quartzJob1" class="cn.hydom.ztc.ztc_cp.quartz.QuartzJob1"></bean>  
    15.     <bean id="quartzJob2" class="cn.hydom.ztc.ztc_cp.quartz.QuartzJob2"></bean>  
    16.     <bean id="quartzJob3" class="cn.hydom.ztc.ztc_cp.quartz.QuartzJob2"></bean>  
    17.       
    18.     <!-- 任务配置列表 -->  
    19.     <bean id="jobtask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
    20.         <!-- 调用的类 -->  
    21.         <property name="targetObject">  
    22.             <ref bean="quartzJob1" />  
    23.         </property>  
    24.         <!-- 调用类中的方法 -->  
    25.         <property name="targetMethod">  
    26.             <value>work</value>  
    27.         </property>  
    28.          <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->  
    29.          <property name="concurrent" value="false"/>  
    30.     </bean>   
    31.     <bean id="jobtask2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
    32.         <!-- 调用的类 -->  
    33.         <property name="targetObject">  
    34.             <ref bean="quartzJob2" />  
    35.         </property>  
    36.         <!-- 调用类中的方法 -->  
    37.         <property name="targetMethod">  
    38.             <value>work</value>  
    39.         </property>  
    40.     </bean>   
    41.     <bean id="jobtask3" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
    42.         <!-- 调用的类 -->  
    43.         <property name="targetObject">  
    44.             <ref bean="quartzJob3" />  
    45.         </property>  
    46.         <!-- 调用类中的方法 -->  
    47.         <property name="targetMethod">  
    48.             <value>work</value>  
    49.         </property>  
    50.     </bean>   
    51.       
    52.       
    53.       
    54.       
    55.       
    56.     <!-- 触发器配置  时间指定 -->  
    57.     <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
    58.         <property name="jobDetail" ref="jobtask1"></property>  
    59.         <!-- cron表达式 -->  
    60.         <property name="cronExpression">  
    61.             <!-- 每隔10秒执行一次 <value>0/10 * * * * ?</value> -->  
    62.             <!-- 每天每隔5分钟执行一次 <value>0 0/5 * * * ?</value> -->  
    63.              <value>0 0/5 * * * ?</value>  
    64.             <!-- 每天上午8点执行一次 <value>0 0 8 * * ?</value>-->  
    65.             <!-- 在每天下午16点到下午16:59期间的每1分钟触发 <value>0 * 16 * * ?</value> -->  
    66.         </property>  
    67.     </bean>  
    68.     <bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
    69.         <property name="jobDetail" ref="jobtask2"></property>  
    70.         <!-- cron表达式 -->  
    71.         <property name="cronExpression">  
    72.             <!-- 每隔10秒执行一次 <value>0/10 * * * * ?</value> -->  
    73.             <!-- 每天每隔10分钟执行一次 <value>0 0/10 * * * ?</value> -->  
    74.             <!-- <value>0 0/10 * * * ?</value> -->  
    75.             <!-- 每天上午8点执行一次 <value>0 0 8 * * ?</value>-->  
    76.             <!-- 在每天下午16点到下午16:59期间的每1分钟触发 <value>0 * 16 * * ?</value> -->  
    77.             <!-- 每天凌晨1点执行一次 -->  
    78.             <value>0 0 1 * * ?</value>  
    79.         </property>  
    80.     </bean>  
    81.     <bean id="cronTrigger3" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
    82.         <property name="jobDetail" ref="jobtask3"></property>  
    83.         <!-- cron表达式 -->  
    84.         <property name="cronExpression">  
    85.             <!-- 每月最后一天23点30分执行一次 -->  
    86.             <value>0 30 23 L * ?</value>  
    87.         </property>  
    88.     </bean>  
    89.       
    90.     <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->  
    91.     <bean id="startQuertz" lazy-init="false" autowire="no"  
    92.         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
    93.         <property name="triggers">  
    94.             <list>  
    95.                 <!-- 触发器列表    -->  
    96.                 <ref bean="cronTrigger1" />  
    97.                 <ref bean="cronTrigger2" />  
    98.                 <ref bean="cronTrigger3" />  
    99.             </list>  
    100.         </property>  
    101.     </bean>  
    102.   
    103. </beans>  
    104.       
    105.       
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
    	http://www.springframework.org/schema/beans
    	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    
    
    
    	<!-- spring自动任务调度器配置 -->
    
    
     	<!-- 要调用的工作类 -->
    	<bean id="quartzJob1" class="cn.hydom.ztc.ztc_cp.quartz.QuartzJob1"></bean>
    	<bean id="quartzJob2" class="cn.hydom.ztc.ztc_cp.quartz.QuartzJob2"></bean>
    	<bean id="quartzJob3" class="cn.hydom.ztc.ztc_cp.quartz.QuartzJob2"></bean>
    	
    	<!-- 任务配置列表 -->
    	<bean id="jobtask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    		<!-- 调用的类 -->
    		<property name="targetObject">
    			<ref bean="quartzJob1" />
    		</property>
    		<!-- 调用类中的方法 -->
    		<property name="targetMethod">
    			<value>work</value>
    		</property>
    		 <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
    		 <property name="concurrent" value="false"/>
    	</bean> 
    	<bean id="jobtask2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    		<!-- 调用的类 -->
    		<property name="targetObject">
    			<ref bean="quartzJob2" />
    		</property>
    		<!-- 调用类中的方法 -->
    		<property name="targetMethod">
    			<value>work</value>
    		</property>
    	</bean> 
    	<bean id="jobtask3" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    		<!-- 调用的类 -->
    		<property name="targetObject">
    			<ref bean="quartzJob3" />
    		</property>
    		<!-- 调用类中的方法 -->
    		<property name="targetMethod">
    			<value>work</value>
    		</property>
    	</bean> 
    	
    	
    	
    	
    	
    	<!-- 触发器配置  时间指定 -->
    	<bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    		<property name="jobDetail" ref="jobtask1"></property>
    		<!-- cron表达式 -->
    		<property name="cronExpression">
    			<!-- 每隔10秒执行一次 <value>0/10 * * * * ?</value> -->
    			<!-- 每天每隔5分钟执行一次 <value>0 0/5 * * * ?</value> -->
    			 <value>0 0/5 * * * ?</value>
    			<!-- 每天上午8点执行一次 <value>0 0 8 * * ?</value>-->
    			<!-- 在每天下午16点到下午16:59期间的每1分钟触发 <value>0 * 16 * * ?</value> -->
    		</property>
    	</bean>
    	<bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    		<property name="jobDetail" ref="jobtask2"></property>
    		<!-- cron表达式 -->
    		<property name="cronExpression">
    			<!-- 每隔10秒执行一次 <value>0/10 * * * * ?</value> -->
    			<!-- 每天每隔10分钟执行一次 <value>0 0/10 * * * ?</value> -->
    			<!-- <value>0 0/10 * * * ?</value> -->
    			<!-- 每天上午8点执行一次 <value>0 0 8 * * ?</value>-->
    			<!-- 在每天下午16点到下午16:59期间的每1分钟触发 <value>0 * 16 * * ?</value> -->
    			<!-- 每天凌晨1点执行一次 -->
    			<value>0 0 1 * * ?</value>
    		</property>
    	</bean>
    	<bean id="cronTrigger3" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    		<property name="jobDetail" ref="jobtask3"></property>
    		<!-- cron表达式 -->
    		<property name="cronExpression">
    			<!-- 每月最后一天23点30分执行一次 -->
    			<value>0 30 23 L * ?</value>
    		</property>
    	</bean>
    	
    	<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
    	<bean id="startQuertz" lazy-init="false" autowire="no"
    		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    		<property name="triggers">
    			<list>
    				<!-- 触发器列表    -->
    				<ref bean="cronTrigger1" />
    				<ref bean="cronTrigger2" />
    				<ref bean="cronTrigger3" />
    			</list>
    		</property>
    	</bean>
    
    </beans>
    	
    	

    2,编写工作类

    QuartzJob1.java QuartzJob2.java QuartzJob3.java

    这3个类都一样,这里只写QuartzJob1,如果统一时间有多个任务要执行,可拆分成多个方法,在work方法中统一调用

    1. package cn.hydom.ztc.ztc_cp.quartz;  
    2.   
    3. import javax.annotation.Resource;  
    4.   
    5. import org.apache.commons.logging.Log;  
    6. import org.apache.commons.logging.LogFactory;  
    7.   
    8. import cn.hydom.ztc.ztc_cp.service.CarParkService;  
    9.   
    10.   
    11.   
    12.   
    13. /**  
    14.  * @Description: 定时器  
    15.  * @author whl  
    16.  * @date 2014-10-22  
    17.  */  
    18. public class QuartzJob1 {  
    19.       
    20.     //log4j  
    21.     private static final Log log = LogFactory.getLog("");  
    22.       
    23.       
    24.     @Resource  
    25.     private CarParkService carParkService;  
    26.       
    27.     /**  
    28.      * @Description: 定时任务调度主方法  
    29.      * @param      
    30.      * @return void    
    31.      * @throws  
    32.      * @author whl  
    33.      * @date 2014-10-22  
    34.      */  
    35.     public void work(){  
    36.   
    37.         task1();  
    38.   
    39.     }  
    40.       
    41.       
    42.     //扫描xxx  
    43.     public void task1(){  
    44.           
    45.         log.warn("QuartzJob1.task1()  每隔5分钟执行一次");  
    46.           
    47.           
    48.     }  
    49.   
    50. }  
  • 相关阅读:
    Struts2结合Ajax实现登录
    Java读取Properties文件
    职责链模式
    javaScript初学者易错点
    2019 DevOps 必备面试题——DevOps 理念篇
    如何成为一名优秀的敏捷团队负责人
    为什么企业敏捷团队会失败
    伪装的敏捷,我好累
    CODING 告诉你如何建立一个 Scrum 团队
    十倍程序员的传说
  • 原文地址:https://www.cnblogs.com/xuxiuxiu/p/5962054.html
Copyright © 2011-2022 走看看