这种配置方式,只适合在项目添加后台定时任务。
1.添加maven依赖
<!-- quartz-->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
2.增加定时任务配置到spring-context.xml
<!-- 定时任务实现类 -->
<bean name="jobClass" class="TimerTask"/>
<bean id="increJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="jobClass"/>
</property>
<property name="targetMethod">
<!-- 要执行的方法名称 -->
<value>execute</value>
</property>
</bean>
<!-- ======================== 调度触发器 ======================== -->
<bean id="cronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="increJob"></property>
<!-- 每3秒执行一次 -->
<property name="cronExpression" value="0/3 * * * * ?"></property>
</bean>
<!-- ======================== 调度工厂(此种方法可以使用注解方式调用Service、Dao)======================== -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 以注解方式引用 JobFactory类 -->
<property name="jobFactory" ref="jobFactory" />
<property name="triggers">
<list>
<ref bean="cronTriggerBean" />
</list>
</property>
</bean>
JobFactory类
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.stereotype.Service;
@Service("jobFactory")
public class JobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory autowireCapableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object jobInstance= super.createJobInstance(bundle);
autowireCapableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
TimerTask类
import javax.annotation.Resource;
import java.util.List;
public class TimerTask {
@Resource
PersonService personService;
public void execute() {
List<Persion> all = personService.getAll();
System.out.println(all);
}
}
将项目部署到服务器,启动就会执行。