quartz定时任务

以下代码案例是基于Spring Boot框架。定义一个定时任务,我们需要明白这个定时任务是要我们做什么,什么时候做。

1.配置定时时间。在yml配置文件中配置定时任务的时间。

test
  singleDef:
    syncFileCron: '0 0 7 * * ?'

时间配置依次是秒分时日月年,具体配置这里不就详细解释了。

2.配置一个常量类,对应yml配置文件。一般一个yml有多个配置,为了方便管理,弄一个总的配置文件,里面管理其他的配置

@Component
@ConfigurationProperties("test")
@Data
public class Properties {
	/**
	 *     定时任务对接相关配置
	 */
	private SingleDef singleDef;
	
}
@Component
@ConfigurationProperties("test.single-def")
public class SingleDef {
	
	/**
	 * 	同步的时间
	 */
	private String syncFileCron;
	
}

3.定义具体要做的事情

具体的方法实现:

@Configuration
public class QuartzConfig {
	
	@Autowired
	private properties properties;
	
     //同步
    @Bean(name = "syncOrgAndPeopleJob")
    public MethodInvokingJobDetailFactoryBean unsubscribeJob(JobGetAll jobGetAll){
        MethodInvokingJobDetailFactoryBean factoryBean = new MethodInvokingJobDetailFactoryBean();
        factoryBean.setConcurrent(true);
        factoryBean.setTargetObject(jobGetAll);
        //设置总的job方法中要启动的方法名--syncOrgAndPeople
        factoryBean.setTargetMethod("syncOrgAndPeople");
        
        return  factoryBean;
    }
    @Bean(name = "syncOrgAndPeopleCron")
    public CronTriggerFactoryBean syncOrgAndPeopleCron(@Qualifier("syncOrgAndPeopleJob")MethodInvokingJobDetailFactoryBean unsubscribeJob){
        CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();
        factoryBean.setJobDetail( unsubscribeJob.getObject() );
        //每天早上7点同步
        factoryBean.setCronExpression(properties.getSingleDef().getSyncFileCron());
        return  factoryBean;
    }
    
    @Bean(name = "sch")
    public SchedulerFactoryBean schedulerFactoryBean(Trigger ... triggers){
        SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
        // 设置 triggers
        factoryBean.setTriggers(triggers);
        // 自动运行
        factoryBean.setAutoStartup(true);
 
        return factoryBean;
    }
    

4.配置总的启动类,在这个类中可以对任务进行停止,重新启动等等操作

@Configuration
public class JobGetAll {
	@Autowired
	@Qualifier("sch")
	private Scheduler scheduler;
	@Autowired
	private ISingleLoginService singleLoginService;

	/**
	 * 同步
	 * 
	 * @throws Exception 抛出异常
	 */
	public void syncOrgAndPeople() throws Exception {
        //具体定时要做的事
		singleLoginService.xxx();
	}


}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值