首先就是把quartz的架包导入
创建一个要执行的方法并且要实现Job这个接口,
public class Myquartz implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println(context.getJobDetail().getKey());
JobDataMap map = context.getJobDetail().getJobDataMap();
System.out.println(map.get("name"));
System.out.println("你好,我是你执行的任务");
}
}
public static void main(String[] args) throws SchedulerException {
//创建任务实例
JobDetail job =JobBuilder.newJob(Myquartz.class)
.withIdentity("Myquartz","group1")
//写入值
.usingJobData("name", "Hello world!")
.build();
//创建触发器
Trigger tr=TriggerBuilder.newTrigger()
.withIdentity("trdemo","group1")
//每五秒执行一次
.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).withRepeatCount(5)).build();
//创建调度器
Scheduler sc =new StdSchedulerFactory().getScheduler();
sc.scheduleJob(job,tr);
sc.start();
}
上面是SimpleTrigger,还有一种方法是CronTrigger,CronTrigger比SimpleTrigger功能更强,首先要会看
public static void main(String[] args) throws SchedulerException {
//创建任务实例
JobDetail job =JobBuilder.newJob(Myquartz.class)
.withIdentity("Myquartz","group1")
.usingJobData("name", "Hello world!")
.build();
String text="50 28 20 * * ? *";
//创建触发器
Trigger tr=TriggerBuilder.newTrigger()
.withIdentity("trigger1","group1")
.withSchedule(CronScheduleBuilder.cronSchedule(text))
.forJob(job)
.build();
//创建调度器
Scheduler sc =new StdSchedulerFactory().getScheduler();
sc.scheduleJob(job,tr);
sc.start();
}
其实两种写法都差不多,可以根据自己喜欢的方法进行选择,quartz是外面用的比较的开源框架,那么就看下quartz怎么和spring整合,首先还是要导入spring包
其实上面的架包里面还少了一个spring-tx-4.2.5.RELEASE.jar架包,然后在spring进行配置,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 定义任务 -->
<bean id="demo02" class="com.znsd.quartz.demo02"></bean>
<!-- 创建任务 -->
<bean id="jobDetail1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="demo02"></property>
<property name="targetMethod" value="demo"></property>
</bean>
<!-- 配置SimpleTrigger任务调度器 -->
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail1"></property>
<property name="startDelay" value="1000"></property>
<property name="repeatInterval" value="2000"></property>
</bean>
<!-- 配置触发器开始 -->
<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 定义任务 -->
<bean id="demo02" class="com.znsd.quartz.demo02"></bean>
<!-- 创建任务 -->
<bean id="jobDetail1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="demo02"></property>
<property name="targetMethod" value="demo"></property>
</bean>
<!-- 配置CronTrigger任务调度器 -->
<bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail1" />
<property name="cronExpression" value="50 28 20 * * ? *" />
</bean>
<!-- 配置触发器开始 -->
<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="crontestJobTrigger"/>
</list>
</property>
</bean>
</beans>
最后是用ApplicationContext ac=new ClassPathXmlApplicationContext(“spring.xml”);