`
ziyu_1
  • 浏览: 194508 次
  • 来自: ...
社区版块
存档分类
最新评论

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 
我定义了一个 规则类来处理转换规则(写得不是很好 能用就行 嘿嘿)

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。
分享到:
评论

相关推荐

    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 quartz集群配置

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

    springQuartz.zip

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

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

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

    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