`
生死格斗
  • 浏览: 125653 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring的定时任务详细配置

阅读更多
1. Web.xml的配置
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/beans-dao.xml</param-value>
    </context-param>
<listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
</listener>


2. spring配置文件中的配置
   <!-- 测试定时任务 -->
    <bean id="timerJob" class="com.dayang.spring.timer.TimerTest">
    <property name="programService">
<ref bean="programService"/>
</property>
    </bean>
   
    <bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
    <ref bean="timerJob"/>
    </property>
<property name="targetMethod">
<value>doJob</value>//执行任务的方法名称
</property>
<!--
<property name="concurrent" value="false"/>
-->
    </bean>
   
    <!-- 定义触发时间 -->
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
<property name="jobDetail">  
<ref bean="methodInvokingJobDetail"/>  
</property>

<!-- 应用启动后 10 seconds -->
<!-- repeat every 60 seconds -->
<!--
<property name="startDelay">
       <value>10000</value>
  </property>

<property name="repeatInterval">
   <value>720000</value>
  </property>
-->

<property name="cronExpression">
  <!-- 代表 每月2号 18点执行一次  -->
   <!-- value>0 0 18 2 * ?</value-->
   <!-- 测试可用  每天18时执行 每5分钟执行一次 (0/5)-->
   <!-- 每一分钟执行一次 -->
    <value>0 0/1 * * * ?</value>
   </property>

<!-- 每天11点 27-30分 每隔一分钟执行一次 -->
<!-- property name="cronExpression" value="0 27-30 11 * * ?"  /--> 

</bean>
   
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序   -->
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
<property name="triggers">
<list>
<ref local="simpleTrigger"/>
</list>
</property>
</bean>







3. java代码

public class TimerTest {

	private IProgramService programService;
	private Logger log = Logger.getLogger(TimerTest.class);

	public IProgramService getProgramService() {
		return programService;
	}

	public void setProgramService(IProgramService programService) {
		this.programService = programService;
	}
	
	
	public void doJob(){
		log.debug("********* Begin do my job *********");
		Date d =new Date();
		//Long count = this.programService.countAll();
		//System.out.println("Programs number is ["+count+"] time ["+d.toString()+"]");
		System.out.println(d.toString());
		
		log.debug("********* End do my job *********");
	}
	
}




4.解决定时任务重复执行的问题
http://blog.csdn.net/chaijunkun/article/details/6925889




附件是quartz的jar包

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics