【Spring Boot】定时任务
测试用业务Service
package com.example.schedule.service; import org.springframework.stereotype.Service; @Service public class UserService { public void syncUserData(){ System.out.println("syncUserData"); } } package com.example.schedule.service; import org.springframework.stereotype.Service; @Service public class StudentService { public void syncStudentData(){ System.out.println("syncStudentData"); } }
1、使用Spring的@Scheduled注解
使用@EnableScheduling注解启用Spring定时任务
package com.example.schedule; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class ScheduleApplication { public static void main(String[] args) { SpringApplication.run(ScheduleApplication.class, args); } }
定时方法
package com.example.schedule.scheduled_bean; import com.example.schedule.service.StudentService; import com.example.schedule.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class YcxScheduledBean { @Autowired UserService userService; @Autowired StudentService studentService; @Scheduled(cron="*/2 * * * * ?") public void syncData() { System.out.println(">>> YcxScheduledBean"); userService.syncUserData(); studentService.syncStudentData(); } }
2、使用quartz
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
继承QuartzJobBean
package com.example.schedule.job; import com.example.schedule.service.StudentService; import com.example.schedule.service.UserService; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.QuartzJobBean; public class YcxSyncJob extends QuartzJobBean { @Autowired UserService userService; @Autowired StudentService studentService; @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println(">>> QuartzJobBean 同步任务"); userService.syncUserData(); studentService.syncStudentData(); } }