quartz学习3

一个 cron 表达式有 6 个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:


* :代表所有可取的值,比如说,如果分钟为 * ,那么就表示每一分钟;

? 只有月份中的天数和星期中的天数可以使用?来表示,因为“月份中的天数”和“星

  期中的天数”不能同时设值,所以我们可以通过?来表明不想设置的那个元素 

- :用来指定一个范围类的值,比如说,小时为 ”10-12” ,它就表示 10 点、 11 点、 12 

, :逗号用来分隔一个元素的多个值,比如说“星期中的天数”为 "MON,WED,FRI" ,

  它就表示周一、周三和周五。

/ :斜杠用来表示间隔,比如说,秒数为 5/10 ,那么它就表示第 5 秒、第 15 秒、第

  25 秒、第 35 秒、第 45 秒和第 55 秒。斜杠前的数字表示起始位置,后面的数字表

  示每次增长的数量。

L :仅用在“月份中的天数”和“星期中的天数”元素中。如果是前者,它代表某月的

   最后一天;如果是后者,它就表示是周六。有一点特别的,当表示“星期中的天数”

    时, L 可以和数字一起用,比如 ”6L” ,它就表示这个月的最后一个星期五。

W :只能用来表示“月份中的天数”,和数字一起使用。比如说 15W ,它就表示离这

    个月 15 号最近的工作日。使用 W 时,“月份中的天数”必须为一个指定的日期,

    而不能是一个范围的日期。

# :只能用来表示“星期中的天数”。例如 5#4 ,它表示某个月中第四个星期四, 2#1

   表示某个月中第一个星期一。 # 前面的数字代表星期,后面的数字表示是第几个。

 ----------------------------------------------------------------------------------------------

JobDetailBean: 
       用户可以直接使用Quartz的JobDetail在Spring中配置一个JobDetail Bean,但是JobDetail使用带参的构造函数,对于习惯通过属性配制的Spring用户来说存在使用上的不便。为此Spring通过扩展JobDetail提供了一个更具Bean风格的JobDetailBean。

    JobDetailBean扩展于Quartz的JobDetail。使用该Bean声明JobDetail时,Bean的名字即是任务的名字,如果没有指定所属组,就使用默认组。除了JobDetail中的属性外,还定义了以下属性:

    JobClass:类型为Class,实现Job接口的任务。

   BeanName:默认为Bean的ID名,通过该属性显式指定Bean名称,它对应任务的名称。

   JobDateAsMap:类型为Map,为任务所对应的JobDataMap提供值。之所以需要提供这个属性,是因为用户无法在Spring配置文件为JobDataAsMap类型的属性提供信息,所以Spring通过jobDataAsMap设置JobDataMap的值。

  ApplicationContextJobDataKey:用户可以将Spring ApplicationContext的引用保存到JobDataMap中,以便在Job的代码中访问ApplicationContext。为了达到这个目的,用户需要指定一个键,用以在jobDataAsMap中保存  ApplicationContext,如果不设置此键,JobDetailBean就不将ApplicationContext放入到JobDataMap中。
          JobListenerNames;类型为String[],指定注册在Scheduler中的JobListeners名称,以便让这些监听器对本任务的事件进行监听。

Java代码   收藏代码
  1. <bean id="autoSendJob"  
  2.     class="org.springframework.scheduling.quartz.JobDetailBean">  
  3.     <property name="jobClass">  
  4.         <value>com.techson.himsnanhwa.admin.scheduler.AutoSendScheduler</value>  
  5.     </property>  
  6.     <property name="applicationContextJobDataKey" value="applicationContext"/>  
  7.     <property name="jobDataAsMap">  
  8.      <map>                  
  9.             <entry key="days">  
  10.              <value>1</value>  
  11.             </entry>                 
  12.             <entry key="isAutoSend">  
  13.              <value>false</value>  
  14.             </entry>  
  15.             <entry key="isDebug">  
  16.              <value>false</value>  
  17.             </entry>  
  18.         </map>  
  19.     </property>  
  20. </bean>  

 days、isAutoSend、isDebug是类中AutoSendScheduler中自己定义的属性!

Java代码   收藏代码
  1. public class AutoSendScheduler extends QuartzJobBean {    
  2.   
  3.     private int days=1;  
  4.     private Boolean isAutoSend;  
  5.     private Boolean isDebug;  
  6.       
  7.     protected void executeInternal(JobExecutionContext arg0) {            
  8.         Map dataMap = arg0.getJobDetail().getJobDataMap();  
  9.         ApplicationContext appCtx = (ApplicationContext)dataMap.get("applicationContext");  
  10.         。。。  
  11.     }  
  12. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值