查看此文章的朋友有可以留下联系方式,大家相互交流,共同进步。谢谢
经过这次项目对于定时调用有了一定的了解。感觉比较好的有两种方法,
1、一种是Timer类的定时调用。这种方式的缺点就是第一次调用的时候要手动启动,以后开始每天循环调用。当然这种方式的好处就是可以控制每天调用多少次。虽然第一次比较麻烦,但是给我的感觉还是不错的。下面我们来把这种方式稍微写一下。
在此处我用定时将日志文件中的数据入库作为例子来写。
public class SavaLog{
public void savaLog(){
Date() d=new Date();
Timer timer=new Timer();//实力化一个定时器类
TimerTask task=new TimerTask(){
public void run() {//使用匿名类的方式重写TimerTask中的run方法
System.out.println("======================计时器开始加载");
//在此方法中就可以调用数据层方法,或者其他的方法。run()中的内容会感觉我们的设置定时被 执行
}
};
/**
此处的设置表示从d所标示的时间起,没经过1000毫秒调用一次此方法。如果想每天调用此意则可以将
1000修改成 1000*60*60*24。
**/
timer.schedule(task, d,1000);
}
}
以上方法,如果是在web项目中,可以将此方法写在action或者是servlet中。然后再页面中加一个form表单。表单中添加一个submit按钮。form表单链接到action或者是servlet。想启动此定时方法的时候只要点击按钮就可以。我写的例子中式取当前时间。也就是点击按钮的时候run方法执行一次。而且是每1秒执行一次。如果将1000修改成 1000*60*60*24。则表示每天在你点击按钮的按个时间调用run方法。执行里面的内容。
2、第二种方式是使用spring的方式来调用
第一步、我们先写一个类,这个类中的方法将会被定时调用
public class SavaLog{
public void savaLog(){
//添加其他的逻辑代码,比如调用数据层的 方法,进行数据库操作。
}
}
第二步、导入一个jar包:quartz-all-1.6.5.jar 这个jar包网上到处都有,我的附件中也有提供。
第三步:配置spring的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="backupQuarz" class="SavaLog" /><!--此处将类加载进来。如果有 包一定前面要加包名-->
<bean id="quartzDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="backupQuarz" />
</property>
<property name="targetMethod">
<value>savaLog</value><!--此处添加要定时调用的方法名-->
</property>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- see the example of method invoking job above -->
<property name="jobDetail" ref="quartzDetail" />
<!-- 每天早上4:35调用一次。 -->
<property name="cronExpression" value="0 35 4 * * ?"/>
</bean>
<!-- 启动前面定义的定时器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="triggerBean" />
</list>
</property>
</bean>
</beans>
以上内容完成后就可以进行调用调用savaLog方法了。要注意的是。调用的这个方法不能有传入参数。如果是在web项目中。涉及到调用action中的方法,而你的action又用spring进行了代理。也就是 spring中有一个bean的配置是<bean:name="/log" class="SavaLog"> ,此时,就要更改一下配置,配置如下:
<bean id="quartzDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="/log" />
</property>
<property name="targetMethod">
<value>savaLog</value><!--此处添加要定时调用的方法名-->
</property>
<property name="concurrent" value="false" />
</bean>
<bean id="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- see the example of method invoking job above -->
<property name="jobDetail" ref="quartzDetail" />
<!-- 每天早上4:35调用一次。 -->
<property name="cronExpression" value="0 35 4 * * ?"/>
</bean>
<!-- 启动前面定义的定时器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="triggerBean" />
</list>
</property>
</bean>
分享到:
相关推荐
dgdgdgddddddddddddddddddddddd
NULL 博文链接:https://penghuaiyi.iteye.com/blog/353669
本文档详细的描述啦如何制定一个定时的服务,通过定时服务调用功能类,完成某项定时的任务
本实列模拟windows服务定时调用WebApi接口,采集第三方的电子处方数据,并提供第三方所需SQL视图,代码功能及实现逻辑测试可用,内附流程图及数据库安装脚本。因本程序调用的是第三方接口,需要在内网环境调用(如需...
程序启动类:dzw.Start.java 程序连接sqlserver用的是jtds,mysql和oracle的数据库连接驱动类请自行放到程序里:src/libs下(这里不支持重新上传文件(:)。 可根据需要,自行修改源代码,程序功能有限,不喜勿喷,有...
analyData这是一个java定时任务,定时调用mysql的存储过程
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
java语言通过cmd命令在远程电脑上创建定时任务,从而达到控制远程开启或者关闭自己想要处理的应用程序,而不用亲临。很简单,由于win10系统的安全性,使用邮箱在线注册过的win10估计是不行的,自己试吧。
定时调用java程序监控webservic或系统可用性,并记录日志文件
C#编写的Winform程序,可以丢在服务器定时调用接口,无需配置,比Win服务方便一点,源码开放可自行拓展
使用Java Swing写的一个小程序,用来定时关机、定时重启、定时执行某一个应用程序。执行时调用cmd命令执行的。其他的,就没什么了,最后用exe4j把jar打包成了exe文件,在本地测能用,不知道其他地方是否能用,内部有...
Devops定时调用http接口,定时执行SSH命令的WEB定时任务工具。本系统强依赖Flask-APScheduler的功能,只是拓展了web页面部分。使用Python3进行开发。
.net Quartz定时任务实例,两种方式调用:配置文件,代码动态调用
使用java调用timesten实现Oracle入库 1、要安装好timesten 2、需要配好system dsn ttdemo 3、创建表和存储过程 以上略 4、java内容如下: package com; import java.sql.Connection; import ...
Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”、“每天22点执行”、“每月18日的下午执行8次”等各种定时任务。 Quartz.Net中的概念:计划者...
帮助在java中调用weka中的数据集的源代码,java写的代码
N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送促销邮件用的,欢迎提意见和建议...
工作中常常会有定时任务的开发需求,特别是移动端。最近笔者正好有所涉及,鉴于此,结合开发中的案例说明一下几种定时任务的 退出 。 需求说明 :定时更新正在生成的文件大小和状态【进行中、失败、完成】,如果...
Java版钉钉群定时发消息(读取本地txt),钉钉群内配置一个机器人,在本地建立好txt文件,部署程序定时读取发送。 运行环境:tomcat7 eclipse 无需数据库
定时调用 Quartz.jar,实现定时调用