quartz 定时任务

工作需要要做一个定时任务,定时更新数据。写了个定时任务,把配置记录下,方便交流学习。


配置文件:

1.web.xml里面配置支持定时任务的配置文件 applicationContext-quartz.xml

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>
		classpath*:/applicationContext-quartz.xml
	</param-value>
</context-param>

2.applicationContext-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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans                                  
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
	default-autowire="byName" default-lazy-init="false">
	<description>定时任务配置</description>
	
    <bean name="startQuertz" lazy-init="false" autowire="no"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	    <property name="triggers">
			<list>
				<ref bean="cronTriggerScpr"/>
			</list>
	    </property>
    </bean>
    <!-- 每五分钟查询一次-->
    <bean id="sucproJob" class="com.vcspark.service.task.SuccessedProjecyTask" />
    <bean id="supr_job" 
         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<span style="white-space:pre">	</span><property name="targetObject" ref="sucproJob"/>
	<property name="targetMethod" value="updateSuccessedProject" />
	<property name="concurrent" value="false" /><!-- 作业不并发调度 -->
    </bean>
		
    <bean id="cronTriggerScpr" class="org.springframework.scheduling.quartz.CronTriggerBean">
	<property name="jobDetail" ref="supr_job" />
			<!--每五分钟执行一次-->
	<property name="cronExpression" value="0 0/5 * * * ?" />
    </bean>
</beans>
<!-- cronExpression的配置说明,具体使用以及参数请百度google
字段   允许值   允许的特殊字符
秒    0-59    , - * /
分    0-59    , - * /
小时    0-23    , - * /
日期    1-31    , - * ? / L W C
月份    1-12 或者 JAN-DEC    , - * /
星期    1-7 或者 SUN-SAT    , - * ? / L C #
年(可选)    留空, 1970-2099    , - * / 
- 区间  
* 通配符  
? 你不想设置那个字段
下面只例出几个式子
 
CRON表达式    含义 
"0 0 12 * * ?"           每天中午十二点触发 
"0 15 10 ? * *"          每天早上10:15触发 
"0 15 10 * * ?"          每天早上10:15触发 
"0 15 10 * * ? *"        每天早上10:15触发 
"0 15 10 * * ? 2005"     2005年的每天早上10:15触发 
"0 * 14 * * ?"           每天从下午2点开始到2点59分每分钟一次触发 
"0 0/5 14 * * ?"         每天从下午2点开始到2:55分结束每5分钟一次触发 
"0 0/5 14,18 * * ?"      每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 
"0 0-5 14 * * ?"         每天14:00至14:05每分钟一次触发 
"0 10,44 14 ? 3 WED"     三月的每周三的14:10和14:44触发 
"0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10:15触发 
"0 0/5 * * * ?"          每隔5分钟执行一次
"0 0 */1 * * ?			  每隔一小时执行一次
 -->

配置文件的对应关系



其中 com.vcspark.service.task.successedProjecyTask 是自定义的定时器类。

updateSuccessedProject 是自定义的定时器类的方法,每次定时器执行都是执行此方法


具体的java代码:

public class SuccessedProjecyTask{
	@Autowired
	private ProjectDao projectDao;
    
	private Date ft=null;
	private static final Logger LOG=LoggerFactory.getLogger(SuccessedProjecyTask.class);
	
	public void updateSuccessedProject(){
		 LOG.info("-----------------检查是否有项目或梦想成功定时任务开始--------------------");
		 List<Project> projects=projectDao.getSussedProject();
		 if(projects!=null&&!projects.isEmpty()){
			 LOG.info("updateSuccessedProject----------projects.size="+projects.size());
			 for(Project project:projects){
				 Project_Audit pa = project.getProject_Audit();
				 //projectDao.updatePaStatus(pa.getId());
				 pa.setStatus(Integer.valueOf(12));
				 project.setProject_Audit(pa);
				 projectDao.save(project);
				 LOG.info("定时任务将项目或梦想状态改为已成功,修改的项目id是:"+project.getId());
			 }
		 }
		LOG.info("-----------------检查是否有项目或梦想成功定时任务结束--------------------");
 	}


这个用的是Spring3.1和quartz1.8.6版本,quartz2版本有变动,等有时间整理下,把具体配置也卸下来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值