项目要求数据用后台管理系统统一管理,但是海康数据只保存三个月 ,只能自己写个定时任务,每十分钟往数据库存储一下
之前.net是写web.config进行配置时间,
< appSettings >
< add key ="cronExpr" value ="0 0 8-17/1 ? * 2-6" />
</ appSettings >
然后创建一个普通类,实现Quartz.IJob接口
public class RetrieveAj2003T140Job : Quartz.IJob
{
private static DataView aj2003View;
public RetrieveAj2003T140Job()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void Execute(Quartz.JobExecutionContext context)
{
//throw new Exception("The method or operation is not implemented.");
//你的处理逻辑,也就是“工作”
}
}
最后在Global.asax文件中启动工作调度
<% @ Import Namespace = " Quartz " %>
< script runat = " server " >
IScheduler sched;
void Application_Start( object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
ISchedulerFactory sf = new Quartz.Impl.StdSchedulerFactory();
sched = sf.GetScheduler();
JobDetail job = new JobDetail("job1", "group1", typeof(RetrieveAj2003T140Job));
string cronExpr = ConfigurationManager.AppSettings["cronExpr"];
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1",cronExpr);
sched.AddJob(job, true);
DateTime ft = sched.ScheduleJob(trigger);
sched.Start();
}
void Application_End( object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
if (sched != null)
{
sched.Shutdown(true);
}
}
</ script >
真的是繁琐的一批,现在看了下 ,其实java也是和.net相同的思路,写配置文件什么的,但是spring框架强大的封装了多任务调度,只要在springboot框架的基础上加上@EnableScheduling 即可进行任务调度。
1.肯定是新建springboot工程了,这里pom我就不粘贴了,就是之前文章粘贴上去的pom。
2.在类上加上注解
@Component
@EnableScheduling // 1.开启定时任务
@EnableAsync // 2.开启多线程
@Component这块补充下
@Component注解的解析
今天在写程序的时候看见一个以前没有见过的注解(@Component),在网上查找过后,经过实践,决定把它记录下来。
1、@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
2、@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
3、@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=""/>)
@EnableScheduling就是开启定时任务,同时为了项目高效的运行,需要支持高并发多任务多线程 @EnableAsync注解加上即可(java大法好)
3.开始执行任务
@Async
@Scheduled(cron = "0 0/5 * * * ?")
只要在方法上加上上面的注解和开始时间 即可进行多任务执行
简单的一批,具体定时器的我自己也没明白 每次都是百度的
具体的网上对Cron表达式详解有很多的文章Cron表达式