当前位置: 首页 > 知识库问答 >
问题:

AnnotationConfigApplicationContext中的Quartz调度程序

邬英武
2023-03-14

我使用Quartz Scheduler(使用JobDetailFactoryBean)和Spring来安排一些作业。现在我通过XmlApplicationContext通过spring配置实现了这一点,我必须将其更改为AnnotationConfigApplicationContext。那么,我如何在AnnotationConfigApplicationContext中实现这个cronjob呢。这是样本工作

<bean id="simpleJob" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass">
            <value>com.scheduling.SimpleJob</value>
        </property>
        <property name="jobDataAsMap">
            <map>
                <entry key="anotherBean">
                    <ref bean="anotherBean" />
                </entry>                
            </map>
        </property>
    </bean>

    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="simpleJob" />
        </property>
        <property name="cronExpression">
            <value>0 55 23 * * ?</value>
        </property>
    </bean>

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">      
            <list>      
                <ref bean="simpleTrigger" />            
            </list>
        </property>
    </bean> 

感谢您的任何建议。

共有1个答案

祖迪
2023-03-14

像这样:

@Configuration
@EnableScheduling
public class AppConfig
{
  @Scheduled(cron="0 55 23 * * ?")
  public void doSomething() {
      // something that should execute every night at 23:55
  }
}

请参阅此处了解更多详细信息。

 类似资料:
  • 如果这个问题太幼稚,我很抱歉,我希望作业被安排成一个一个地执行,而不是并行地执行,它只执行一次。 在文档中,@disallowConcurrentExecution是 null PS:我不知道会安排哪些工作。因此,如果作业已经在运行,我需要一些方法来动态链接作业。

  • 我使用石英版和Spring Boot版。它表现正常,一切正常。但是当我试图关闭这个应用程序时,问题出现了。日志显示有内存泄漏... 我的石英配置; 我有两个班,执行如下工作; 另一个班也同样做着不同的事情。 调度器工厂Bean如下; 我得到了像下面这样的tomcat日志; 查阅了quartz文档,并在properties中添加了以下内容:; 第一条线程消息消失了,但关于worker-2的第二条消息

  • 问题内容: 我计划使用Quartz调度程序,因为我阅读了很多好的意见。 我的问题如下:在任何给定时间,系统中都会存在成千上万的触发器。大多数触发器将仅触发一个事件并死亡。另外,很有可能我将不得不在分配许多作业后取消它们(基于新的输入)。 石英可以缩放吗?推荐哪个JobStore?我计划在mysql上使用JDBC。 附加信息 :我的工作将发送电子邮件或通过HTTP发布将数据发布到其他服务(通过WAN

  • 问题内容: 请考虑这个例子。 一个示例Web应用程序要求其启动。调度程序配置为将其作业存储在DB中。 该应用程序被复制到六个Web服务器上。 因此,如果我们启动六个Web服务器,则在单个DB上将有六个具有相同名称的调度程序。如https://quartz- scheduler.org/documentation/quartz-2.1.x/cookbook/MultipleSchedulers中所述

  • 相关: 我觉得我错过了什么?

  • 我使用CalendarTriggerImpl每3天触发我的作业。我的开始时间是2012-12-10 15:00:00,结束时间是2013-12-10。但是当我在2012-12-11 11:00:00执行我的计划程序时,作业会执行。如何解决这个问题。我没有使用cron触发器,因为它会在每个月重置。所以请帮助我在2012-12-10 15:00:00、2012-12-13 15:00:00、2012-