Spring中正确使用Quartz和CronExpression
Quartz作为企业级任务调度框架以其灵活的使用方式、强大的功能已经得到广泛应用,作为一向喜欢将业内流行的工具纳入支持的Spring自然已经内置了对Quartz的支持,使得Quartz中最常使用的SimpleTrigger和CronTrigger的使用得到了最大简化,分别对应Spring的
org.springframework.scheduling.quartz.SimpleTriggerBean和
org.springframework.scheduling.quartz.CronTriggerBean,这两个类用起来非常方便,其中SimpleTrigger更类似于JDK中的Timer,它只是简单的以某个时间间隔来执行某个任务而已,比较简陋,而CronTrigger功能则十分强大,可以设定制定任务在任意指定时刻内调用,其使用Unix中的Cron Expression来制定调度策略,十分灵活,不过Cron Expression 可能需要用点时间来学习,不过一旦掌握会觉得真的很不错,掌握了这两种Trigger基本上就可以应付实现大多数J2EE 应用中的时间任务调度服务了。下面举一个简单例子说明一下在Spring1.2.5中使用
Quartz1.5的方式(所需要的包在Spring1.2.5的发行版中的lib目录下可以到,将其拷贝到工程的类路径中)。首先建立两个要调度的任务,他们都必须继承自
org.springframework.scheduling.quartz.QuartzJobBean,而业务
逻辑都是放在executeInternal方法中,指定的任务逻辑实现之后,需要将其注入到一个JobDetailBean中,JobDetailBean 可以看作为一个具体任务的设置它指定了要执行的任务和执行任务的时间策略,JobDetailBean不用实现,只需要在Spring的配置文件中设置便可:package
com.peuo.albumSys.scheduling;import java.util.Iterator; import java.util.List;
import java.util.Set;import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;
import
org.springframework.scheduling.quartz.QuartzJobBean;import
org.apache.log4j.Logger;import
com.peuo.albumSys.business.IAlbumSysService;
import com.peuo.albumSys.domainobj.User;
import com.peuo.albumSys.domainobj.Album;spring framework和spring的关系
public class ScheduledQueryUsers extends QuartzJobBean { private static Logger log =
private IAlbumSysService service = null;
public void setService(IAlbumSysService service) {
this.service = service;
}
protected void executeInternal(JobExecutionContext ctx)
throws JobExecutionException {
log.debug("Now entering method executeInternal()...");
List users = service.findAllUser();
StringBuffer str = new StringBuffer();
for(int i = 0; i < users.size(); i++){
User user = ((i);
str.append("\nUser[" + i + "] = " +
Set albums = AlbumSet();
Iterator it = albums.iterator();
str.append("(Albums:");
while(it.hasNext()){
str.append(((()).getAlbumName()).append(";");
}
}
log.String());
}} package com.peuo.albumSys.scheduling;import
java.util.Date;import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;import
org.springframework.scheduling.quartz.QuartzJobBean;import org.apache.log4j.Logger;import
com.peuo.albumSys.business.IAlbumSysService;
import com.peuo.albumSys.domainobj.Album;
import com.peuo.albumSys.domainobj.Photo;
public class ScheduledAddPhoto extends QuartzJobBean { private static Logger log =
private IAlbumSysService service = null;
private static int count = 0;
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
Date now = new Date(System.currentTimeMillis());
Photo newPhoto = new Photo();
newPhoto.setAlbum(new Album(new Integer(1)));
newPhoto.setPhotoName( String());
newPhoto.setPhotoUrl("Photo url" + ++count);
service.addPhoto(newPhoto);
log.debug("New photo added : name =" + PhotoName() +"; url = " +
}
public IAlbumSysService getService() {
return service;
}
public void setService(IAlbumSysService service) {
this.service = service;
}
}
然后在Spring的配置文件中分别设置一个SimpleTriggerBean 和CronTriggerBean来调用上面两个任务,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "">< beans>…………………………………………………………………………………………………… <bean
id="queryUserJob"

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。