写这个的契机:上网找了很多资料,一直跑不起来,或者不能执行,所以整理下,方便自己和别人。
需要用的包
- 需要包
- Maven所需包配置
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
配置web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>
<listener>
<listenerclass>org.springframework.web.context.ContextLoaerListener</listener-class>
</listener>
配置spring-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 第一种方式实现JobDetail 继承QuartzJobBean -->
<bean id="jobQuartzDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="job.JobQuartz"></property>
<property name="Durability" value="true"></property>
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="5"></entry>
</map>
</property>
</bean>
<!-- 第二种方式实现JobDetail 普通类指定方法 -->
<bean id="jobQuartz2" class="job.JobQuartz2" />
<bean id="jobQuartzDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="jobQuartz2"></property>
<property name="targetMethod" value="work"></property>
</bean>
<!-- 触发器的第一种方式 -->
<bean id="trigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobQuartzDetail2"></property>
<property name="repeatInterval" value="1000"></property>
</bean>
<!-- 触发器的第二种方式 CRON表达式 -->
<bean id="trigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobQuartzDetail2"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<!-- 把触发器加入到任务列表中 -->
<bean id="testScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="trigger" />
</list>
</property>
</bean>
</beans>
任务Job实现
- 第一个Job实现
package job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class JobQuartz extends QuartzJobBean {
private int timeout;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println("quartz test success" + timeout);
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
}
- 第二个实现
package job;
import java.text.SimpleDateFormat;
import java.util.Date;
public class JobQuartz2 {
public void work() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:"+sdf.format(new Date()));
}
}
最后部署到服务器,启动就OK了