Spring quartz(定时器任务)

来源:互联网 发布:国外网络流行模式 编辑:程序博客网 时间:2024/06/05 23:46

我的Spring MVC设计模式的配置,SSH,SSI大致相似。

1:引入相应的jar包:

 <!-- Spring定时器任务 --> 
      <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>1.8.6</version>
        </dependency>  
2:在Spring配置文件中配置: 
 
     <!-- 定义定时器,定时删除相应的东西 -->
    <!-- 要调用工作类 -->
    <bean id="quartzJob" class="com.myd.Util.Quart"></bean>
    <!-- 定义调用对象的方法 -->
  <bean id="jobtask"   <!--处理任务类--> class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject">    <!-- 调用的类 -->
                <ref bean="quartzJob"/>       <!--引用上面的Id>
            </property>
            <property name="targetMethod">              <!-- 调用类中的方法 -->
                <value>work</value>  <!--方法名,无参,可加参数-->
            </property>
        </bean>
        
     <!-- 定义触发时间 -->
     <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="jobDetail">
                <ref bean="jobtask"/>   <!--为处理任务类,-->  
            </property>
            <!-- cron表达式 -->
            <property name="cronExpression">
                <value>0/10 * * * * ?</value> <!-- 定义工作时间 每10s触发 -->
            </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="doTime"/>  <!--自动执行id="doTime"的bean,处理任务-->
                </list>
            </property>
        </bean>  
3:

需要注意的几点:

1、spring的@Scheduled注解  需要写在实现上、

2、 定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true、具体就去百度google吧)

3、实现类上要有组件的注解@Component(Spring的注解)

4、剩下的就是corn表达式了、具体使用以及参数请百度google、

下面只例出几个式子

CRON表达式    含义 
"0 0 12 * * ?"    每天中午十二点触发 
"0 15 10 ? * *"    每天早上10:15触发 
"0 15 10 * * ?"    每天早上10:15触发 
"0 15 10 * * ? *"    每天早上10:15触发 
"0 15 10 * * ? 2005"    2005年的每天早上10:15触发 
"0 * 14 * * ?"    每天从下午2点开始到2点59分每分钟一次触发 
"0 0/5 14 * * ?"    每天从下午2点开始到2:55分结束每5分钟一次触发 
"0 0/5 14,18 * * ?"    每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 
"0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发 
"0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发 
"0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10:15触发


0 0