zoukankan      html  css  js  c++  java
  • spring quartz 配置及说明

        方式一,jobDetail的bean利用MethodInvokingJobDetailFactoryBean 工厂包装 :  
          
        (1)定义一个bean,执行具体的业务操作。  
        <bean id="updatePersonService" class="com.corop.packname.UpdatePersonService"/>2)定义一个jobDetail,执行业务操作的作业。  
        <bean id="updatePersonJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <!-- 作业要执行的业务操作 bean -->  
                        <property name="targetObject">  
                                <ref bean="updatePersonService" />  
                        </property>  
          
        <!-- 业务操作bean里面具体执行业务操作的方法-->  
                        <property name="targetMethod">  
                                <value>updatePerson</value>  
                        </property>  
                        <!-- 作业不并发执行 -->  
                        <property name="concurrent">  
                                <value>false</value>  
                        </property>  
        </bean>3)定义一个触发器,根据时间表达式定时触发执行作业  
        <bean id="updatePersonTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
        <!-- 要触发执行的作业 bean -->  
                        <property name="jobDetail">  
                                <ref bean="updatePersonJob" />  
                        </property>  
          
        <!-- 触发作业的时间表达式 -->  
                        <property name="cronExpression">  
                                <!--"0 59 23 * * ?" 每天晚上23点59触发-->  
                                <value>0 57 00 * * ?</value>  
                        </property>  
          </bean>4)定义一个任务调度器  
        <!--lazy-init=false 容器启动时启动调度器,默认值, singleton='true'这个bean是单独存在的-->  
        <bean id="startQuertz" lazy-init="false" singleton='true' autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
                    <property name="triggers">  
                      <!--触发器列表-->  
                        <list>  
                            <ref local="updatePersonTrigger"/>  
                        </list>  
                    </property>  
                     <!--自动启动调度器器-->  
                    <property name="autoStartup">    
                            <value>true</value>    
                    </property>    
          
        </bean>  
          
        方式二,jobDetail采用继承QuartzJobBean的方式:  
          
        (1)定义的业务操作bean继承QuartzJobBean,重载方法 executeInternal(JobExecutionContext jobexecutioncontext) ,执行具体的业务操作。  
         class UpdatePersonService extends QuartzJobBean{  
                private Person person;  
                public void setPerson(Person person){  
                        this.person = person;  
                }  
          
                @Override  
                 public void executeInternal(JobExecutionContext ctx){     
                        throws JobExecutionException  
                        //执行具体的业务操作  
                        String param1 = ctx.getJobDetail().getJobDataMap().getString("param1");  
                }  
          
        }  
        (2)定义jobDetail的bean :  
        <bean id = 'updatePersonJob' class= 'org.springframework.scheduling.quartz.JobDetailBean'>  
                 <!--定义业务操作类-->  
                <property name="jobClass" value = 'com.corop.packname.UpdatePersonService' />  
                <!--定义执行业务操作需要的参数 -->  
                <property name="jobDataAsMap">    
                        <map>    
                              <entry key="timeout" value="0" />   
                               <!-- 此参数是一个bean -->  
                              <entry key="person" value-ref = 'personBean' />  
                              <!--可以从作业执行容器获取此参数-->  
                              <entry key="param1" value="com.custom.package.ClassName"/>     
                        </map>    
                </property>   
        </bean>  
        <bean id = 'personBean' class= 'com.corop.packname.Person'/>3)定义触发器,及(4)定义核心调度器 与 方式一同。  
  • 相关阅读:
    【洛谷P2921】[USACO08DEC]在农场万圣节Trick or Treat on the Farm
    【洛谷P3659】[USACO17FEB]Why Did the Cow Cross the Road I G
    【洛谷P3385】【模板】负环
    Typora+PicGo+Gitee实现图片上传功能
    Java substring() 方法
    Java lastIndexOf的用法
    Tomcat控制台乱码处理解决方法
    HTTP 协议中 URI 和 URL 有什么区别?
    java如何判断某一变量属于什么类型
    Idea发布web项目显示“找不到应用程序”的解决方法
  • 原文地址:https://www.cnblogs.com/lshan/p/9298499.html
Copyright © 2011-2022 走看看