spring定时任务调度quartz

1.maven依赖

<!-- 定时任务 -->
<dependency>
   <groupId>quartz</groupId>
   <artifactId>quartz</artifactId>
   <version>1.5.2</version>
</dependency>

 

2.写一个需要调度任务的方法

@Component
public class PostDataService {
   
   
   private final Logger logger = LoggerFactory.getLogger(getClass());
 
   //@PostConstruct   如果打开就是项目启动后执行此方法
   public void run() {
      try {
         logger.info("开始执行--------------");
         //**查询所有产品数据 和产品客户关系数据
         List<Products> products = getAll(Products.class);
         
         List<ClientProductView> clientProducts = getAll1(ClientProductView.class);
         
         start(products,clientProducts);
         
         
      } catch (Exception e) {
         //错误日志记录
         logger.error("、执行----报错----------\r\n" +  e.getMessage());
         e.printStackTrace();
      }finally {
         logger.info("结束执行--------------");
         //成功日志记录
      }
   }

 

 

3.配置文件(能被spring扫描到)

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath*:/beans/beans*.xml</param-value>
</context-param>

 

 

配置文件写法beans-quartz-task.xml

(1).bean,表明哪个类

<bean id="postDataService"
     class="com.study.demo.service.quartz.PostDataService">
</bean>

(2).要定时执行的方法

<!--要定时执行的方法-->
<bean id="postDataInvoker" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
   <property name="targetObject">
      <!--指定要定时执行的方法所在类,将定时任务定义成bean-->
      <ref bean="postDataService" />
   </property>
   <property name="targetMethod">
      <!--指定定时执行的方法-->
      <value>run</value>
   </property>
   <property name="concurrent">
      <!--指定目标封装为有状态的任务,有状态的任务不能并发执行,无状态的任务可并发执行-->
      <value>true</value>
   </property>
   </bean>

(3).定义触发时间

<!-- 定义触发时间 -->
<bean id="postDataTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
   <property name="jobDetail">
      <ref bean="postDataInvoker" />
   </property>
   <property name="startDelay">
      <value>60000</value>
      </property>
   <!-- cron表达式,此处是每天两点执行 -->
   <property name="cronExpression">
         <!--<value> 0 0/10 * * * ?</value>--><!-- 每隔10分钟, -->
         <value> 0 0 2 * * ?</value><!-- 每天两点执行, -->
      </property>
   </bean>

(4).启动工作

<!--启动工作-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
   <property name="triggers">
      <list>
           <ref local="postDataTrigger" /> 
      </list>
   </property>
</bean>

以上就是任务定时调度

 

附带

  • "0 0 * * * ? "每天整点触发
    "0 0 12 * *?” 每天中午12点触发
    “0 15 10?* *”每天上午10:15触发
    “0 15 10 * *?” 每天上午10:15触发
    “0 15 10 * *?*”每天上午10:15触发
    “0 15 10 * *?2005”2005年的每天上午10:15触发
    “0 * 14 * *?” 在每天下午2点到下午2:59期间的每1分钟触发
    “0 0/5 14 * *?” 在每天下午2点到下午2:55期间的每5分钟触发
    “0 0/5 14,18 * *?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
    “0 0-5 14 * *?” 在每天下午2点到下午2:05期间的每1分钟触发
    “0 10,44 14?3 WED”每年三月的星期三的下午2:10和2:44触发
    “0 15 10?* MON-FRI”周一至周五的上午10:15触发
    “0 15 10 15 *?” 每月15日上午10:15触发
    “0 15 10 L *?” 每月最后一日的下午10:15触发
    “0 15 10?* 6L”每月的最后一个星期五上午10:15触发
    “0 15 10?* 6L 2002-2005”2002年至2005年的每月的最后一个星期五上午10:15触发
    “0 15 10?* 6#3”每月的第三个星期五上午10:15触发  

     

 

备注:定时调度,当服务器启动后,定时调度开始倒计时,所以通过修改服务器时间对此是没有影响的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值