1.Quartz 是一个开源的作业调度框架 ,spring 支持集成Quartz

2.Quartz 作业调度的实现
    1.创建作业job(两种方式:1.新建一个java类继承 Quartz 的 QuartzJobBean.
                          2.新建一个普通的java类)
   
    2.创建触发器trigger(Quartz提供两种触发器  simpleTrigger 和 cronTrigger
                        simpleTrigger 可以设置开始时间,重复时间和重复次数
                        cronTrigger 支持 cron表达式,使用更加灵活)
    3.需要一个调度器scheduler(见配置applicationContext.xml中的schedulerFactoryBean,
                            将触发器注册到调度器)
                       
                       
3.关于 cron表达式 (cronExpression),表示什么时候触发 trigger                   
    可以参考 http://www.blogjava.net/allen-zhe/archive/2007/01/09/92668.html
    特殊字符:
    1.反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
   
    2.问号(?)字符和字母(L) 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。
               所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。
               放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,
               否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
    3.在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,
                表示把执行安排在当月的第一个工作日内。
    4. 井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
    5.星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
   
   
    实例1:
  秒   分  时  日(月内日期)  月   星期 (周内日期)  年
   0   0   6    ?             *      6#3             ?   //表示每个月的第三个星期五的上午6:00:00执行
   解释: 秒(0)分(0)时(6)   ,表示6:00:00;     
  日【月内日期】(?),表示的是每个月没有规定是哪一天,月规定的时间在(周内日期)规定的;
   月(*),表示月可以接受任何字段的值,即每种表达式,扩展到月时均支持。(比如:该例,表示每个月都执行【时(6)日(?)星期(6#3)年(?)】表达式,该例总共有三个表达式)      
   星期 【周内日】(6#3),6:表示的是一个星期的第六天,星期天为第一天;#:表示给月份指定具体的工作实例;3:表示每个月的第三个星期。
    年(?):没有表示具体那一年,通过?号表示每一年都执行。