package com.xy.utils.quartz; java
import org.joda.time.DateTime; spring
import org.slf4j.Logger; tomcat
import org.slf4j.LoggerFactory; ide
/** 測試
* 測試定時器類 spa
* @author javaw 繼承
* get
*/ string
public class TestQuartz { io
public static Logger logger = LoggerFactory.getLogger(TestQuartz.class);
public void TestMethod(){
logger.info("Auto Execute TestMethod start! Date={}" ,new DateTime().toString("YYYY-MM-DD HH:mm:ss" ));
logger.info("**********測試跑批類************");
logger.info("Auto Execute TestMethod end! Date={}" ,new DateTime().toString("YYYY-MM-DD HH:mm:ss" ));
}
}
<!-- 實例化bean -->
<bean id= "testMethodQuartz" class ="com.xy.utils.quartz.TestQuartz"/>
<!-- 配置MethodInvokingJobDetailFactoryBean -->
<bean id= "testTaskMethod"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testMethodQuartz"/>
<property name="targetMethod" value="TestMethod"/>
<property name="concurrent" value="false"/>
</bean>
<!-- 配置定時表達式 -->
<bean id= "testTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
<property name="jobDetail" ref="testTaskMethod" />
<!-- 每一分鐘執行一次 -->
<property name="cronExpression" value="0 0/1 * * * ?" />
</bean>
<!-- 配置調度工廠 -->
<bean id= "testSchedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers" >
<list>
<ref bean="testTaskTrigger" />
</list>
</property>
</bean>
public static void main(String[] args) {
SchedulerFactoryBean schedulerFactoryBean = (SchedulerFactoryBean) SpringUtilsFromClassPathXml.getBean( "testSchedulerFactoryBean");
//啓動調度器
schedulerFactoryBean.start();
}
package com.xy.utils.quartz;
import org.joda.time.DateTime;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
/**
* 測試繼承QuartzJobBean的java類配置定時器
* @author javaw
*
*/
public class TestQuartzExtendsJobBean extends QuartzJobBean{
private static Logger logger = LoggerFactory.getLogger(TestQuartzExtendsJobBean. class);
@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
logger.info("Auto Execute TestQuartzExtendsJobBean start! Date={}",new DateTime().toString( "YYYY-MM-DD HH:mm:ss"));
logger.info("**********"+content.getMergedJobDataMap().get("descString")+"************");
logger.info("Auto Execute TestQuartzExtendsJobBean end! Date={}",new DateTime().toString( "YYYY-MM-DD HH:mm:ss"));
}
}
<!--
第二種:爲繼承Quartz的java類實現跑批
**********1.JobDetailBean
**********2.CronTriggerBean
**********3.SchedulerFactoryBean
-->
<bean id= "testJobDetailBean"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="name" value="exampleJob" />
<property name="jobClass"
value="com.xy.utils.quartz.TestQuartzExtendsJobBean"/>
<!-- 能夠封裝各類數據到JobExecutionContext裏 -->
<property name="jobDataAsMap">
<map>
<entry key="descString" value="測試跑批"/>
</map>
</property>
</bean >
<bean id= "testTaskTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="testJobDetailBean" />
<property name="cronExpression" value="0 0/1 * * * ?" />
</bean>
<bean id= "testSchedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers" >
<list>
<ref bean="testTaskTrigger" />
</list>
</property>
</bean>