1、我用的是CronTriggerBean,支持到指定时间运行一次,如每天24:00运行一次等。
2、创建实现类CsmsTSyslogTimer(其中的service类需要自己扩展)
package com.xgd.CSMS.timer;
import java.net.InetAddress;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.hibernate.Query;
import org.hibernate.Session;
import com.opensymphony.xwork2.ActionContext;
import com.xgd.CSMS.model.CsmsTSyslog;
import com.xgd.CSMS.model.CsmsTUsers;
import com.xgd.CSMS.service.ICsmsTSyslogService;
import com.xgd.CSMS.service.ICsmsTUsersService;
import com.xgd.utils.ResourceUtil;
import com.xgd.utils.SpringBeanUtil;
public class CsmsTSyslogTimer {
private ICsmsTSyslogService csmsTSyslogService;
private ICsmsTUsersService csmsTUsersService;
private CsmsTSyslog csmsTSyslog;
/**
* @param csmsTSyslogService the csmsTSyslogService to set
*/
public void setCsmsTSyslogService(ICsmsTSyslogService csmsTSyslogService) {
this.csmsTSyslogService = csmsTSyslogService;
}
public void deleteSyslog(){
//获取系统日志列表信息
List<CsmsTSyslog> csmsTSyslogList = new ArrayList<CsmsTSyslog>();
try{
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
SimpleDateFormat dsf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date beginDate = new Date();
Calendar date = Calendar.getInstance();
date.setTime(beginDate);
date.set(Calendar.DATE, date.get(Calendar.DATE) - Integer.valueOf(ResourceUtil.getStringValue("days")));//从资源文件中获取days
Date deleteDate = df.parse(df.format(date.getTime()));
String before=df.format(deleteDate);
String sqlsearch = "select * from CSMS_T_SysLog where SYL_createTime <= '"+before+"'";
csmsTSyslogList =csmsTSyslogService.listsql(sqlsearch,CsmsTSyslog.class);
if(csmsTSyslogList!= null && csmsTSyslogList.size()>0){
String sql="delete from CSMS_T_SysLog where SYL_createTime <= '"+before+"'";
int result = csmsTSyslogService.deletesql(sql);
if(result>0){
System.out.println("清除系统日志成功");
//清除系统日志之后,相应的也要增加一条到日志中去
//获取用户信息
ICsmsTUsersService csmsTUsersService = (ICsmsTUsersService) SpringBeanUtil.getBean("csmsTUsersService");
CsmsTUsers csmsTUsers = (CsmsTUsers) csmsTUsersService.find("admin");
//将登录成功信息保存到系统日志中去
CsmsTSyslog syslog = new CsmsTSyslog();
syslog.setSylUserid(csmsTUsers);
InetAddress addr = InetAddress.getLocalHost();
String ip=addr.getHostAddress().toString();//获得本机IP
syslog.setSylLoginip(ip);
syslog.setSylOperation(dsf.format(new Date())+"系统自动清除了"+ResourceUtil.getStringValue("days")+"天前的系统日志!");
syslog.setSylCreatetime(new Date());
syslog.setSylRemark("系统操作日志");
ICsmsTSyslogService csmsTSyslogService = (ICsmsTSyslogService) SpringBeanUtil.getBean("csmsTSyslogService");
csmsTSyslogService.add(syslog);
}else{
System.out.println("清除系统日志失败");
}
}else{
System.out.println("---系统日志无符合条件数据!---");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
/**
* @return the csmsTSyslog
*/
public CsmsTSyslog getCsmsTSyslog() {
return csmsTSyslog;
}
/**
* @param csmsTSyslog the csmsTSyslog to set
*/
public void setCsmsTSyslog(CsmsTSyslog csmsTSyslog) {
this.csmsTSyslog = csmsTSyslog;
}
/**
* @return the csmsTUsersService
*/
public ICsmsTUsersService getCsmsTUsersService() {
return csmsTUsersService;
}
/**
* @param csmsTUsersService the csmsTUsersService to set
*/
public void setCsmsTUsersService(ICsmsTUsersService csmsTUsersService) {
this.csmsTUsersService = csmsTUsersService;
}
}
2、在spring 配置文件中配置相关定时任务。
<!-- 删除系统日志定时器 -->
<bean id="csmsTSyslogTimer" class="com.xgd.CSMS.timer.CsmsTSyslogTimer">
<property name="csmsTSyslogService">
<ref bean="csmsTSyslogService" />
</property>
</bean>
<bean id="SyslogTimer"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="csmsTSyslogTimer" />
</property>
<property name="targetMethod">
<value>deleteSyslog</value>
</property>
</bean>
<bean id="doDeleteSyslog" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="SyslogTimer" />
</property>
<property name="cronExpression">
<value>59 59 23 * * ?</value><!--每天晚上23:59:59执行 59 59 23 * * ? -->
</property>
</bean>
3、启用定时任务
<bean id="doInsertAliAvRemindsTaskTriggerTaskTriggerscheduler" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="doDeleteSyslog"/>
</list>
</property>
</bean>
其他实现方式可参考:http://gong1208.iteye.com/blog/1773177
相关推荐
Spring定时任务的几种实现,欢迎交流!
spring定时任务SimpleTrigger 和CronTrigger 配置
2.通过Spring是JAR-quartz写的一个定时任务 1)普通的定时任务,定时完成指定的任务 2)通过前台动态分配定时任务 可指定多个任务,可同时执行任务,可以精确到时分秒扫描并执行任务 3)可以完成稍微复杂点的任务 ...
使用spring定时任务,使用spring+mybatis 向数据库中插入数据实例
Spring3.x企业应用开发实战 中 Spring 定时任务源码(spring 三种定时任务的实现方式),Spring quartz java 定时器 定时任务 源码
spring spring spring spring定时任务所需jar 齐全
Spring定时任务调用配置Spring定时任务调用配置Spring定时任务调用配置Spring定时任务调用配置Spring定时任务调用配置
spring 做定时器任务时所依赖的10个jar包,用于实现java定时任务。
spring 定时任务 示例代码
实现定时任务的执行操作!
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
完整的javaspring定时任务的实现,通过配置数据库可以实现定时任务的修改,不必频繁的修改配置文件,大家可以自行在上面实现更多的定时任务管理。数据库表结构已经上传
Spring 定时任务 各参数详细说明,注解方式,简洁
本代码实现利用Spring实现定时任务执行功能,用于非Web项目。
通过配置文件来实现定时任务
Spring + quartz 定时任务修改定时时间不重启服务
本案例实现利用Spring技术实现定时任务功能,用于Web项目
spring定时任务,基于xml和java-config的两种配置使用方法.详细参考:http://blog.csdn.net/xiejx618/article/details/38239379
一个tomcat下部署了两个应用,一个是普通web应用syncc,另一个应用syncc_wx属于微信公众号后台程序涉及消息定时推送,tomcat未分离...”spring定时任务执行两次的异常排查处理.docx"针对上述描述问题进行分析和解决。