案例所用Quartz架包:quartz-2.2.1.jar
Spring集成Quartz的配置文件
<?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"> <!-- 配置Job类 --> <bean id="myJob" class="quartz.MyJobTest"></bean> <!-- Quartz 第一种方式 --> <!-- 配置JobDetail --> <bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 执行目标job --> <property name="targetObject" ref="myJob"></property> <!-- 要执行的方法 --> <property name="targetMethod" value="execute"></property> </bean> <!-- Quartz 第二种方式 --> <!-- 配置JobDetail --> <bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="quartz.MyJob2"></property> <property name="durability" value="true"></property> </bean> <!-- 配置tirgger触发器 --> <bean id="cronTriggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- jobDetail 切换--> <!-- <property name="jobDetail" ref="springQtzJobMethod"></property> --> <property name="jobDetail" ref="jobDetail"></property> <!-- cron表达式,执行时间 每5秒执行一次 --> <property name="cronExpression" value="0/5 * * * * ?"></property> </bean> <!-- 配置调度工厂 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerFactoryBean"></ref> </list> </property> </bean> </beans>
第一种方式
public class MyJobTest { public void execute() { System.out.println("Spring 集成 Quartz 的第一种方式"); } }第二种方式继承QuartzJobBean
package quartz; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; /** * @Description: 配置文件中使用JobDetailBean,这是业务Job需要继承QuartzJobBean * @author Administrator * */ public class MyJob2 extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub System.out.println("Spring 集成 Quartz 的第二种方式"); } }测试类
public class Test { public static void main(String[] args) { // 启动Spring 容器 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath:spring-quartz.xml"); System.out.println("initContext successfully"); } }