最近用spring集成了quartz做定時任務感覺還不錯,比Linux中的crontab靠譜多了,所以記錄下來,留個筆記
集羣:http://blog.csdn.net/itjavaer/article/details/77948574
在pom.xml引入quartz
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
創建spring-quartz.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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://jax-ws.dev.java.net/spring/core
http://jax-ws.dev.java.net/spring/core.xsd">
<bean name="testTask" class="com.orange.task.TestTask"/>
<bean id="testDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 執行的類 -->
<property name="targetObject">
<ref bean="testTask" />
</property>
<!-- 執行的方法 -->
<property name="targetMethod">
<value>execute</value>
</property>
<!--參數 沒有可以不寫-->
<property name="arguments">
<value>2017-07-01</value>
</property>
<!-- 如果上一個任務沒執行完下一個任務不執行 默認爲true -->
<property name="concurrent" value="false" />
</bean>
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="testDetail" />
</property>
<!-- 執行規則:10分鐘執行一次 第30秒開始執行-->
<property name="cronExpression">
<value>30 */10 * * * ?</value>
</property>
</bean>
<!--調度-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--觸發器列表-->
<ref bean="testTrigger" />
<!--
<ref bean="otherTrigger" />
-->
</list>
</property>
</bean>
</beans>
<import resource="classpath:spring-quartz.xml"/>
package com.orange.task;
import com.orange.service.TestService;
public class TestTask {
@Autowired
private TestService testService;
public void execute(String date){
System.out.println(date);
testService.test(date);
}
}
如果是web項目啓動tomcat就行了,我建的不是web項目,使用main方法啓動
public class StartTaskMain {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[] { "classpath:spring.xml" });
}
}