开发者社区 > 云原生 > 容器服务 > 正文

spring 集成quazt 后如何实现等spring容器加载完成之后自动执行一次任务?

我的项目中使用了spring集成quazt来实现任务调度任务的功能,现在有这样一个需求,我需要通过后台任务每隔半小时统计一次业务数据,然后放到缓存中,前台页面通过实时刷新页面来从缓存中获取统计的数据,可能,当我们系统刚上线的时候调度任务还没有执行,要等到指定的时间点才执行,我现要想让系统等到spring容器加载完成后就自动执行一次,请问有什么办法吗?

Java代码 收藏代码

<bean id="refreshOldAccountTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"  
        autowire="no">  
        <property name="jobDetail">  
            <ref bean="refreshOldAccountStaticTask" />  
        </property>  
        <!-- cron表达式 -->  
        <property name="cronExpression">  
          
            <!--  设置的定时器,每30分钟执行一次 -->  
            <value>* 10/30 * * * ? * </value>    
        </property>  
    </bean>  
  
  
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->   
    <bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"   
        lazy-init="false" autowire="no">   
          <property name="triggers">   
              <list>  
                   
                    
                  <ref bean="refreshOldAccountTrigger"/>  
                  
              </list>  
               
          </property>   
           <property name="autoStartup" value="true"/>  
    </bean>

展开
收起
长安归故里. 2020-01-31 13:50:56 1167 0
1 条回答
写回答
取消 提交回答
  • 用SimpleTriggerBean即可

    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
            <property name="jobDetail" ref="myJob" />   
            <property name="startDelay" value="开始时的延迟 如0" />  
            <property name="repeatInterval" value="重复执行间隔" />  
        </bean>
    
    2020-01-31 13:51:07
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载