Spring中配置定时器详解.doc
文本预览下载声明
现在想要获得在特定时间或者指定时间执行相应功能有两种做法在applicationContext.xml中写入如下Beanbean id=repeatingTrigger?? class=org.springframework.scheduling.timer.ScheduledTimerTask?? !--启动一秒后执行 --?? property name=delay??? value1000/value?? /property?? !--每隔一小时执行一次 --?? property name=period??? value3600000/value?? /property?? !--注入要监控的javaBean --?? property name=timerTask??? ref bean=task /?? /property?? !--类型是否为fixedRate型,默认为fixedDelay--?? property name=fixedRate??? valuetrue/value?? /property
/beanbean id=scheduler?? class=org.springframework.scheduling.timer.TimerFactoryBean?? property name=scheduledTimerTasks??? list???? ref bean=repeatingTrigger /??? /list?? /property/bean
bean id=task class=com.css.wam.portlet.SampleTask?? property name=workService??? ref bean=workService /?? /property?? property name=work??? ref bean=work /?? /property/bean
然后写SampleTask类,如下:
package com.css.wam.portlet;
import java.util.ArrayList;import java.util.Calendar;import java.util.Iterator;import java.util.List;import java.util.TimerTask;
import javax.servlet.ServletContext; 字串2
import org.apache.jetspeed.security.SecurityException; 字串9
import com.css.wam.service.WorkService; 字串1
@SuppressWarnings(unused)class SampleTask extends TimerTask{??? 字串2
??? private static final int C_SCHEDULE_HOUR = 23;//设置指定时间??? private WorkService workService;??? private List users;??? private List teams;??? private WorkPortlet work;?? ??? public void setWorkService(WorkService workService) {?? this.workService = workService;} 字串7
public void setWork(WorkPortlet work) {?? this.work = work;} 字串4
??? public SampleTask(){??? } ?? ??? @SuppressWarnings(unchecked)public void run() {?? ??????? Calendar cal = Calendar.getInstance();??????? try {????????? users = work.getUsers();????????? teams = new ArrayList();?????? for(Iterator it = users.iterator(); it.hasNext();)?????? {??????? String teamname = work.getGroupsByUser((String)it.next());??????? teams.add(teamname);?????? }???
显示全部