请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

4回答

提问者 学习中的傅山 2020-05-17 00:51:17

package com.fushan.o2o.config.quartz;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import com.fushan.o2o.service.ProductSellDailyService;

@Configuration
public class QuartzConfiguration {
   @Autowired
   private ProductSellDailyService productSellDailyService;
   @Autowired
   private MethodInvokingJobDetailFactoryBean jobDetailFactory;
   @Autowired
   private CronTriggerFactoryBean productSellDailyTriggerFactory;

   /**
    * 创建jobDetailFactory并返回
    *
    * @return
    */
   @Bean(name = "jobDetailFacotry")
   public MethodInvokingJobDetailFactoryBean createJobDetail() {
       // new出JobDetailFactory对象,此工厂主要用来制作一个jobDetail,即制作一个任务。
       // 由于我们所做的定时任务根本上讲其实就是执行一个方法。所以用这个工厂比较方便。
       MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean();
       // 设置jobDetail的名字
       jobDetailFactoryBean.setName("product_sell_daily_job");
       // 设置jobDetail的组名
       jobDetailFactoryBean.setGroup("job_product_sell_daily_group");
       // 对于相同的JobDetail,当指定多个Trigger时, 很可能第一个job完成之前,第二个job就开始了。
       // 指定concurrent设为false,多个job不会并发运行,第二个job将不会在第一个job完成之前开始。
       jobDetailFactoryBean.setConcurrent(false);
       // 指定运行任务的类
       jobDetailFactoryBean.setTargetObject(productSellDailyService);
       // 指定运行任务的方法
       jobDetailFactoryBean.setTargetMethod("dailyCalculate");
       return jobDetailFactoryBean;
   }

   /**
    * 创建cronTriggerFactory并返回
    *
    * @return
    */
   @Bean("productSellDailyTriggerFactory")
   public CronTriggerFactoryBean createProductSellDailyTrigger() {
       // 创建triggerFactory实例,用来创建trigger
       CronTriggerFactoryBean triggerFactory = new CronTriggerFactoryBean();
       // 设置triggerFactory的名字
       triggerFactory.setName("product_sell_daily_trigger");
       // 设置triggerFactory的组名
       triggerFactory.setGroup("job_product_sell_daily_group");
       // 绑定jobDetail
       triggerFactory.setJobDetail(jobDetailFactory.getObject());
       // 设定cron表达式
       triggerFactory.setCronExpression("0 0 0 * * ? *");
       return triggerFactory;
   }

   /**
    * 创建调度工厂并返回
    *
    * @return
    */
   @Bean("schedulerFactory")
   public SchedulerFactoryBean createSchedulerFactory() {
       SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
       schedulerFactory.setTriggers(productSellDailyTriggerFactory.getObject());
       return schedulerFactory;
   }
}

0 回复 有任何疑惑可以回复我~
提问者 学习中的傅山 2020-05-17 00:51:05

https://img1.sycdn.imooc.com//szimg/5ec019b7094974fb07570857.jpg老师你看有优质大白的记录但是上面就没有图形

0 回复 有任何疑惑可以回复我~
翔仔 2020-05-17 00:45:33

同学好,这里是quartz定时调用的呀,每天定时统计销量用的,视频里面也说了呀,controller没调用

0 回复 有任何疑惑可以回复我~
  • 提问者 学习中的傅山 #1
    但是老师我把时间调了  这个方法没有起作用啊  只有在test测试运行才有数据进数据库
    回复 有任何疑惑可以回复我~ 2020-05-17 00:47:50
  • 翔仔 回复 提问者 学习中的傅山 #2
    每天才执行一次呢。。 我这里试是没问题的啊,视频也是没问题的,所以需要你看看为什么不执行,可以试着调整到每分钟执行一次试试,因为我们环境不一致,也没法帮你精确定位问题,只能靠调试解决,关于quartz,可以学学我的课程
    https://www.imooc.com/learn/846
    回复 有任何疑惑可以回复我~ 2020-05-17 00:51:59
提问者 学习中的傅山 2020-05-16 20:34:52

我好像并没有寻找到controller 有这方法的调用

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信