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
相关推荐
Java中的定时任务与定时器是实现自动化操作的关键技术之一,特别是在需要周期性执行某些功能的场景下,如数据同步、日志清理、定时发送邮件等。本文将深入探讨如何使用Java标准库中的`java.util.Timer`和`java.util....
【Spring Boot + Quartz 动态任务管理系统的构建】 在IT行业中,Spring Boot和Quartz是两个非常重要的组件,常用于构建高效、稳定的后台服务。Spring Boot简化了Spring框架的配置和初始化过程,使得开发者可以快速...
系统日志 Redis监控 Redis终端 网络资源 One一个 散文 绘画 语文 天气查询 影视资讯 即将上映 正在热映 每日一文 任务调度 定时任务 调度日志 技术选型 后端 基础框架Spring Boot 2.0.4.R
- **批处理应用程序**:对于需要执行批量数据处理、报表生成或定时任务等应用场景,Spring Boot 也提供了相应的支持。 - **数据访问应用程序**:与各类数据存储技术(如关系型数据库、NoSQL数据库、缓存系统等)的...
2. `spring-context-support-3.x.y.jar`: 提供了对邮件、定时任务、缓存等的Spring支持,可能作为Spring LDAP的依赖。 3. `spring-beans-3.x.y.jar`, `spring-core-3.x.y.jar`, `spring-expression-3.x.y.jar`: ...
在IT行业中,数据缓存是提高系统性能的关键技术之一,特别是在高并发的互联网应用中。本项目主题聚焦于“基于SSM框架,通过spring注解的方式,实现redis的数据缓存机制,将mysql的数据缓存到redis数据库”,这涉及到...
- **SpringCloud**:建立在SpringBoot之上,是一套用于构建云应用的微服务工具集,旨在为开发者提供在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、...
- **RDB(Redis Database Backup)**:在指定的时间点将内存中的数据集快照写入磁盘。优点是可以快速恢复数据,缺点是可能会丢失最近的数据。 - **AOF(Append Only File)**:记录每次写操作,重启后可以从 AOF ...
Quartz或Spring Task可以用来执行定时任务,如自动备份、数据统计等。 总的来说,【企业管理(完整系统)】是一个集成了多种技术的综合性管理平台,通过SSM+EasyUI的组合,为企业提供了高效、易用的管理工具,并且...
可能会集成Quartz或Spring Task等任务调度框架,用于实现定时任务,比如定期清理过期订单、统计销售数据等。 10. **日志管理**: 日志记录是系统监控和问题排查的重要工具,项目可能使用Log4j或Logback等日志框架...
Spring Boot是由Pivotal团队开发的,旨在简化Spring应用的初始搭建以及开发过程,它通过提供默认配置来消除大量的XML配置,并且集成了大量常用的第三方库配置,如数据源、JPA、定时任务等。 1. **Spring Boot核心...
- **数据收集**:可以通过定时任务或消息队列机制实现自动化数据收集。 - **数据处理**:利用 Spring Boot 的批处理能力或者集成 Apache Spark 等大数据处理框架完成数据的清洗和转换。 - **数据展示**:采用 ...
4. **调度和执行机制**:Purge工具需要有计划地执行清理任务,可能依赖于定时任务框架,如Quartz或Spring的ScheduledTask。这部分代码将涉及任务调度和执行的逻辑。 5. **异常处理和恢复机制**:在清理过程中可能会...
在实际应用中,通常会根据业务需求创建定时任务来定期发送消息,而不是等待前端请求。这里我们可以利用SpringBoot的`@Scheduled`注解来实现定时任务: ```java @Component @EnableScheduling public class PushTask...
6. **任务调度**:如Quartz或Spring Task,用于定时任务,如定期清理过期数据。 7. **日志管理**:如Log4j或Logback,记录应用运行过程中的信息,便于问题排查。 **项目开发流程:** 1. **需求分析**:明确商城的...
以上是对“基于SSM的图书借阅系统”可能涉及的主要技术点的详尽介绍,实际项目可能还包括其他诸如缓存管理、定时任务、邮件服务等扩展功能。通过学习和实践这个项目,开发者可以深入理解SSM框架的整合应用,提升自己...
SpringBoot通过内嵌Servlet容器(如Tomcat或Jetty),自动配置Spring框架以及提供默认配置来消除大量的起步配置工作。 2. **自动配置**: SpringBoot的核心特性之一是自动配置。它会根据项目依赖自动设置Bean,如...
- **定时任务与重试策略**:SpringBoot内置了Quartz或Spring Scheduler等框架,可用来创建定时任务。同时,通过配置可以实现失败任务的重试策略。 2. **Zookeeper与Dubbo微服务**: - **Zookeeper**:Zookeeper是...
在给定的代码中,虽然没有直接展示删除逻辑,但通常会使用多线程或定时任务来监控并清理这些临时文件,以保证系统的高效运行。 ### 日期时间处理与字符编码 在批量下载过程中,可能需要处理日期时间格式化以及字符...
日志框架方面,文档提到了Quartz,这是一个功能强大的开源作业调度系统,可以用来创建简单或复杂的作业调度,如定时任务的执行等。Quartz可以集成到几乎任何的Java应用中,它的强大之处在于对作业调度的诸多控制和...