1、pom文件
<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>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
首先引入quartz包,然后引入spring包,spring中必须有spring-context-support、spring-core、spring-beans。注意quartz的版本号,版本号不同时xml中引入的定时器类名就不同。
2、配置applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Bean头部 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
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/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->
<context:component-scan base-package="com.iflytek.dao" />
<!-- 要定时执行的类 -->
<bean id="autoCopyFile" class="com.iflytek.dao.AutoCopyFile"></bean>
<!-- 对应的方法传进去就可以了。除了上述的JobDetail构造方式,还要一种更复杂一些,它的定义如下: -->
<!-- 这里因为要用到一些对象的引用,对这些对象或者参数的传递可以通过jobDataMap来处理。 -->
<bean name="complexJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="autoCopyFile" />
<property name="targetMethod" value="jdbcWrite" />
</bean>
<bean name="complexJobDetail22" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="autoCopyFile" />
<property name="targetMethod" value="jdbcRead" />
</bean>
<!-- 注意bean的name,下面会用到。property中 name为默认值,ref为上面引入类的id,value为类中的方法 -->
<!-- Trigger触发器 :从第1秒开始,每5秒执行一次 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="complexJobDetail" />
<property name="cronExpression" value="0/5 * * * * ?" />
</bean>
<bean id="cronTrigger22" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="complexJobDetail22" />
<property name="cronExpression" value="0/6 * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="complexJobDetail" />
<ref bean="complexJobDetail22" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="cronTrigger22" />
</list>
</property>
</bean>
</beans>
配置xml的时,按住ctrl+鼠标左键对所有引入的class进行路径验证,没出先下划线表示pom文件出了问题。定时器的版本号验证不通过时需要去spring-context-support中org.springframework.scheduling.quartz目录中去寻找。
3、CopyFileJob.java 定义一个类继承QuartzJobBean,并重写executeInternal
package com.iflytek.dao;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class CopyFileJob extends QuartzJobBean{
private AutoCopyFile autoCopyFile;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
autoCopyFile.copyFile();
}
public void setAutoCopyFile(AutoCopyFile autoCopyFile) {
this.autoCopyFile = autoCopyFile;
}
}
4、package com.iflytek.dao;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.iflytek.utils.FileUtils;
public class AutoCopyFile {
public void jdbcWrite() {
//数据库写入操作
}
public void jdbcRead() {
//数据库读操作
}
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
}}
不是web文件的话直接使用ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 加载配置文件。
web文件在xml中进行配置 <!-- 配置监听器加载spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 加载spring文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
菜鸟刚接触,怕忘记了,特此写一篇方便以后使用。百度了一堆,不知道是哪位大佬写的,小弟在此表示感谢。