`
allen-zhe
  • 浏览: 15020 次
社区版块
存档分类
最新评论

Spring Quartz如何动态配置时间(2)

阅读更多
书接上回,
上回说到,武松武二郎斗杀西门庆,为大哥报了仇……  !!!-_- 啊,说串了,嘿嘿 不好意思
(删掉上面一行)
上回说到,我们的设置页面已经做好了,接下来就是将时间转换为Unix Cron Expression。

2) 将时间转换为Unix Cron Expression

需要ActionForm将页面表单数据映射到Action中,然后在Action中转换为cron expression:
 1 SchedulerForm schedulerForm  =  (SchedulerForm) form;
 2         String jobName  =  schedulerForm.getJobName();
 3         String cronExpression  =   "" ;
 4         String[] commonNeeds  =   {schedulerForm.getSecond(), schedulerForm.getMinute(), schedulerForm.getHour()} ;
 5         String[] monthlyNeeds  =   {schedulerForm.getWeek(), schedulerForm.getDayOfMonth()} ;
 6         String weeklyNeeds  =  schedulerForm.getDayOfWeek();
 7         String userDefinedNeeds  =  schedulerForm.getDate();
 8         String everyWhat  =  schedulerForm.getEveryWhat();
 9          // 得到时间规则
10         cronExpression  =  CronExpConversion.getCronExpression(everyWhat, commonNeeds,
11                 monthlyNeeds, weeklyNeeds, userDefinedNeeds);
12

我定义了一个 规则类来处理转换规则(写得不是很好 能用就行 嘿嘿)
 1
 2 /** */ /**
 3  * 页面设置转为UNIX cron expressions 转换类
 4  * CronExpConversion
 5   */

 6 public   class  CronExpConversion  {
 7     
 8      /** */ /**
 9      * 页面设置转为UNIX cron expressions 转换算法
10      *  @param  everyWhat
11      *  @param  commonNeeds 包括 second minute hour
12      *  @param  monthlyNeeds 包括 第几个星期 星期几
13      *  @param  weeklyNeeds  包括 星期几
14      *  @param  userDefinedNeeds  包括具体时间点
15      *  @return  cron expression
16       */

17      public   static  String convertDateToCronExp(String everyWhat,
18             String[] commonNeeds, String[] monthlyNeeds, String weeklyNeeds,
19             String userDefinedNeeds)  {
20         String cronEx  =   "" ;
21         String commons  =  commonNeeds[ 0 +   "   "   +  commonNeeds[ 1 +   "   "
22                  +  commonNeeds[ 2 +   "   " ;
23         String dayOfWeek  =   "" ;
24          if  ( " monthly " .equals(everyWhat))  {
25              //  eg.: 6#3 (day 6 = Friday and "#3" = the 3rd one in the
26              //  month)
27             dayOfWeek  =  monthlyNeeds[ 1 ]
28                      +  CronExRelated.specialCharacters
29                             .get(CronExRelated._THENTH)  +  monthlyNeeds[ 0 ];
30             cronEx  =  (commons
31                      +  CronExRelated.specialCharacters.get(CronExRelated._ANY)
32                      +   "   "
33                      +  CronExRelated.specialCharacters.get(CronExRelated._EVERY)
34                      +   "   "   +  dayOfWeek  +   "   " ).trim();
35         }
  else   if  ( " weekly " .equals(everyWhat))  {
36             dayOfWeek  =  weeklyNeeds;  //  1
37             cronEx  =  (commons
38                      +  CronExRelated.specialCharacters.get(CronExRelated._ANY)
39                      +   "   "
40                      +  CronExRelated.specialCharacters.get(CronExRelated._EVERY)
41                      +   "   "   +  dayOfWeek  +   "   " ).trim();
42         }
  else   if  ( " userDefined " .equals(everyWhat))  {
43             String dayOfMonth  =  userDefinedNeeds.split( " - " )[ 2 ];
44              if  (dayOfMonth.startsWith( " 0 " ))  {
45                 dayOfMonth  =  dayOfMonth.replaceFirst( " 0 " "" );
46             }

47             String month  =  userDefinedNeeds.split( " - " )[ 1 ];
48              if  (month.startsWith( " 0 " ))  {
49                 month  =  month.replaceFirst( " 0 " "" );
50             }

51             String year  =  userDefinedNeeds.split( " - " )[ 0 ];
52              // FIXME 暂时不加年份 Quartz报错
53              /**/ /* cronEx = (commons + dayOfMonth + " " + month + " "
54                     + CronExRelated.specialCharacters.get(CronExRelated._ANY)
55                     + " " + year).trim(); */

56             cronEx  =  (commons  +  dayOfMonth  +   "   "   +  month  +   "   "
57                      +  CronExRelated.specialCharacters.get(CronExRelated._ANY)
58                      +   "   " ).trim();
59         }

60          return  cronEx;
61     }
    
62 }

63
这样就将页面的时间设置转为了Cron Expression。

                                                   To Be Continued...
分享到:
评论
1 楼 FireZHFox 2013-01-18  
CronExRelated这个类没有啊?

相关推荐

    Spring Quartz如何动态配置时间

    Spring Quartz 动态配置时间 Spring Quartz 是一个功能强大的任务调度框架,广泛应用于 Java 企业级应用程序中。其中一个重要的功能便是动态配置时间,触发相应的任务。在本文中,我们将讨论如何使用 Spring Quartz...

    Spring Quartz动态配置时间.rar

    这个压缩包“Spring Quartz动态配置时间.rar”包含的PDF文档很可能是关于如何在Spring框架中使用Quartz进行动态配置时间的详细教程。下面将详细介绍Spring集成Quartz进行动态任务调度的相关知识点。 1. **Quartz...

    spring mvc quartz 动态设置时间

    【Spring MVC + Quartz 动态设置时间】 在Java Web开发中,Spring MVC和Quartz库经常被用来构建灵活的任务调度系统。Quartz是一个强大的、开放源码的作业调度框架,可以用于创建、调度和执行重复任务。而Spring MVC...

    spring quartz 非配置动态定时

    本话题主要关注如何在Spring中结合Quartz实现非配置动态定时任务,这允许我们在运行时动态地添加、修改或删除定时任务,而无需修改配置文件。 首先,我们需要理解Spring对Quartz的支持。Spring通过`org.spring...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    SpringQuartz的使用文档

    SpringQuartz是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...

    关于spring中quartz的配置

    以下将详细介绍如何在Spring中配置Quartz以及相关知识点。 1. **引入依赖** 在开始配置之前,首先需要在项目的`pom.xml`或`build.gradle`文件中引入Quartz和Spring相关的依赖库。对于Maven项目,可以添加如下依赖...

    quartz整合springbatch动态集群定时实现mysql参考

    1. **Quartz配置**:定义了调度器、作业和触发器的配置,可能使用了`org.springframework.scheduling.quartz.SchedulerFactoryBean`来初始化Quartz。 2. **Spring Batch配置**:包含了作业和步骤的定义,以及读取和...

    spring quartz 表达式在线生成器

    2. **Spring与Quartz集成**:介绍如何在Spring应用中配置Quartz,包括使用`@EnableScheduling`注解开启调度,以及如何定义`@Scheduled`注解的任务。 3. **Cron表达式**:详细讲解Cron表达式的组成部分和语法,以及...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    2. 配置Scheduler:在Spring的配置文件中,使用`SchedulerFactoryBean`来初始化和配置Quartz Scheduler。可以设置如数据库存储、线程池大小等参数。 3. 创建Job类:定义一个实现了`org.quartz.Job`接口的类,这是...

    spring quartz集群配置

    Spring Quartz 集群配置详解 在分布式系统中,定时任务的管理往往是一个重要的环节,Spring与Quartz的结合能够帮助我们实现复杂的工作调度。Quartz是一个开源的作业调度框架,它提供了高度可配置的定时任务执行能力...

    springQuartz.zip

    2. **Spring与Quartz的集成**:Spring 提供了对Quartz的整合,使得我们可以利用Spring的IOC(控制反转)来管理Scheduler实例,以及Job和Trigger。这使得任务的创建和管理变得更加灵活和方便。 3. **配置定时任务**...

    Spring中Quartz的配置

    ### Spring中Quartz的配置详解 #### 一、前言 Spring框架因其强大的功能和灵活性在企业级应用开发中占据了一席之地。其中,对于定时任务的支持,Spring结合了Quartz这一优秀的开源任务调度框架,提供了更为灵活和...

    spring Quartz的jar包

    在Java环境中,Spring Quartz使得我们可以方便地管理和配置定时任务,而无需深入理解Quartz的复杂配置。 首先,我们来看一下提供的jar包: 1. `spring.jar`:这是Spring框架的核心库,包含了Spring的核心组件,如...

    spring quartz 时间调用框架

    **Spring Quartz时间调用框架详解** Spring Quartz是一个在Spring框架中集成的时间调度插件,它允许开发者方便地创建和管理定时任务。Quartz是Java领域的一款功能强大的作业调度库,而Spring通过其优秀的IoC...

    spring+quartz demo

    在 Spring 的配置文件(如 `applicationContext.xml`)中,我们需要引入 Quartz 的配置,并声明一个 `SchedulerFactoryBean` 来实例化和配置 Quartz Scheduler。这通常包括定义数据源、JobDetail 和 Trigger。 2. ...

    Springboot2-Quartz 后台可动态配置的定时任务

    本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...

    spring quartz定时任务demo

    2. **spring.jar**:Spring框架的核心库,包含了Spring的核心功能,如IoC容器、AOP等,使得与Quartz的整合更加顺滑。 3. **配置文件**:通常包括`quartz.properties`和`applicationContext.xml`。`quartz....

Global site tag (gtag.js) - Google Analytics