quartz,spring-quartz,spring-task,spring-schedule
2017-12-05 10:29
441 查看
介绍 quartz,spring-quartz,spring-task,spring-schedule
一:quartz
quartz是一个调度器,可以放任务进去,对任务指定时间执行。demo如下
1.0 maven依赖
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency>
1.1
在CLASSPATH下创建 quartz.properties 文件 #指定了调度器名字 org.quartz.scheduler.instanceName = MyScheduler #线程池最大线程数量 org.quartz.threadPool.threadCount = 3 #指定调度器存储任务的方式,这个是存储在内存中。 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
1.2 job
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class HelloJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println(123); } } import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; public class QuartzTest { public static void main(String[] args) throws SchedulerException { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow() .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build(); scheduler.scheduleJob(job, trigger); //关闭调度器 //scheduler.shutdown(); } }
二:spring-quartz
spring-quartz只是spring对quartz的一个包装而已。其实现是在spring-context-support中。如果是固定的任务,可以使用xml配置,包括以下都需要在xml中配置
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
org.springframework.scheduling.quartz.JobDetailFactoryBean
org.springframework.scheduling.quartz.JobDetailFactoryBean
org.springframework.scheduling.quartz.SimpleTriggerFactoryBean
org.springframework.scheduling.quartz.CronTriggerFactoryBean
核心 org.springframework.scheduling.quartz.SchedulerFactoryBean
以上这些相互依赖,共同组成调度任务。
如果是做动态的调度则
核心是:
<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="applicationContextSchedulerContextKey" value="applicationContextKey" /> <property name="configLocation" value="classpath:quartz.properties" /> <!--应用启动完后 QuartzScheduler 再启动 --> <property name="startupDelay" value="0" /> </bean>
java引入
@Autowired private org.quartz.Scheduler scheduler; 这个时候,就可以使用该接口的所有方法
三:spring-task
spring-task完全是spring自己的调度实现,其代码是在spring-context中,有2种方式1种是xml,另一种是注解形式。spring-task也支持cron表达式3.1
spring.xml头部依赖xmlns:task=”http://www.springframework.org/schema/task”
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
xml配置
<task:scheduled-tasks> <!-- taskJob是一个service类,job1是方法,--> <task:scheduled ref="taskJob" method="job1" cron="*/2 * * * * ?"/> </task:scheduled-tasks>
java代码如下
@Service//(默认的serviceName是taskJob) public class TaskJob { public void job1() { System.out.println("任务进行中。。。"); } }
3.2 注解
注解任务的java代码是@Component("taskJobAnno") public class TaskJobAnno { @Scheduled(cron = "*/2 * * * * ?") public void job1() { System.out.println("注解任务进行中。。。"); } }
xml配置:注意这里的xml也需要引入xmlns头信息
<task:annotation-driven scheduler="qbScheduler" mode="proxy"/> <task:scheduler id="qbScheduler" pool-size="10"/>
四:spring-schedule
spring-schedule就是spring-taskspring-quartz和spring-task区别
12
相关文章推荐
- Quartz和Spring Task定时任务的简单应用和比较
- EJB3.0变通实现定时任务quartz,schedule ,task,EJB3.0注入Quartz无法注入,注入失败,NullpiontException
- TimerTask、Quartz、Spring-Task 详解
- SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现
- Spring task quartz 定时任务的几种实现
- SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现
- spring中quartz和task定时任务
- Quartz和Spring Task定时任务的简单应用和比较
- Spring task quartz 定时任务的几种实现
- spring中的ThreadPoolTaskSchedule使用
- SpringBoot定时任务两种(Spring Schedule 与 Quartz 整合 )实现方法
- Spring task quartz 定时任务的几种实现
- spring+quartz往task类内部传入参数
- Spring task quartz 定时任务的几种实现
- SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现
- spring的两种定时器:TimerTask 和 Quartz区别
- Spring Task Schedule 及多线程
- Spring 4.x Task 和 Schedule 概述(代java配置)
- quartz 和 spring的 线程池 ThreadPoolTaskExecutor 使用
- 【Spring】Quartz和Task实现定时任务