Maven
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
配置文件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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 要执行任务的任务类。 -->
<bean id="testQuartz" class="com.realfake.manager.bussiness.quarzt.job.TestJob">
</bean>
<!-- 将需要执行的定时任务注入JOB中。 -->
<bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testQuartz"/>
<!-- 任务类中需要执行的方法 -->
<property name="targetMethod" value="dosomething"/>
<!-- 上一次未执行完成的,要等待有再执行。 -->
<property name="concurrent" value="false"/>
</bean>
<!-- 基本的定时器,会绑定具体的任务。启动容器后每3秒执行一次 -->
<bean id="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="testJob"/>
<property name="startDelay" value="3000"/>
<property name="repeatInterval" value="3000"/>
<!--<!–执行次数–>-->
<!--<!–<property name="repeatCount" value="0"/>–>-->
</bean>
<!-- lazy-init="true" 时容器启动时不执行 -->
<bean id="schedulerFactoryBean" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="testTrigger"/>
</list>
</property>
</bean>
</beans>
TestJob类 可以在里面执行业务逻辑
package com.realfake.manager.bussiness.quarzt.job;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestJob {
public void dosomething(){
System.out.println("————"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
启动spring容器后自动运行任务
在TestJob里每隔一段时间从redis获取商品在这段时间增加的浏览数量,更新到数据库后重置redis的商品浏览量