定时任务-quartz
来源:互联网 发布:淘宝订单清洗期几天 编辑:程序博客网 时间:2024/05/22 00:08
一、jar 包 quartz 1.5.2.jar
参考文档:http://www.blogjava.net/baoyaer/articles/155645.html
二、quartz实现
1.关键API
- Scheduler - 与scheduler交互的主要API;
- Job - 你通过scheduler执行任务,你的任务类需要实现的接口;
- JobDetail - 定义Job的实例;
- Trigger - 触发Job的执行;
- Calendar - 日历指定时间点的集合,annualCalendar、monthlyCalendar、weeklyCalendar 对每年、每月、每周的定义
job代码实现
<span style="background-color: rgb(255, 204, 51);">定时任务实现</span>
public static void main(String[] args) {try { //①创建一个JobDetail实例,指定Job JobDetail jobDetail = new JobDetail("job1", "jGroup1",UploadKeywordJob.class); //②通过CronTrigger定义调度规则:每天几点上传 CronTrigger cronTrigger = new CronTrigger("trigger1","tGroup1"); cronTrigger.setCronExpression("0 0 9 ? * *"); //③通过SchedulerFactory获取一个调度器实例 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); //④ 注册并进行调度 scheduler.scheduleJob(jobDetail, cronTrigger); //⑤调度启动 scheduler.start(); //* }catch (Exception se) {se.printStackTrace();}}
注:对于上面*号处让主线程睡眠原因没搞清楚,试过不加正常运行
使用Calendar,排除特定日期
①法定节日是以每年为周期的,所以使用AnnualCalendar
AnnualCalendar holidays = new AnnualCalendar();
②五一劳动节
Calendar laborDay = new GregorianCalendar();
laborDay.add(Calendar.MONTH,5);
laborDay.add(Calendar.DATE,1);
holidays.setDayExcluded(laborDay, true); ②-1:排除的日期,如果设置为false则为包含
③国庆节
Calendar nationalDay = new GregorianCalendar();
nationalDay.add(Calendar.MONTH,10);
nationalDay.add(Calendar.DATE,1);
holidays.setDayExcluded(nationalDay, true);③-1:排除该日期
scheduler.addCalendar("holidays", holidays, false, false);④向Scheduler注册日历
二、spring的定时任务的实现
1.spring中的quartz
- <!-- Timer schedule -->
- <!--要调度的对象-->
- <bean id="jobBean" class="net.xsbiz.common.MakeHtml" />
- <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject" ref="jobBean" />
- <property name="targetMethod" value="execute" />
- <!--将并发设置为false-->
- <property name="concurrent" value="false" />
- </bean>
- <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail" ref="jobDetail" />
- <!--表达式,我的是每 30 执行一次-->
- <property name="cronExpression" value="0/30 * * * * ?" />
- </bean>
- <!-- 总管理类如果将lazy-init='false'那么容器启动就会执行调度程序 -->
- <bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" >
- <property name="triggers">
- <list>
- <!--作业调度器,list下可加入其他的调度器-->
- <ref bean="trigger" />
- </list>
- </property>
- </bean>
web.xml:
- <!-- 设置Spring的监听,项目启动时候初始化 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 指定Spring配置文件的路径 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
- </context-param>
MakeHtml.java :
- //调用的类
- public class MakeHtml {
- //调用的方法
- public void execute(){
- //需要做的事情
- }
- public static void main(String[] args) {
- System.out.println("----begin---");
- ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
- // 如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
- context.getBean("startQuertz");
- System.out.print("----end---");
- }
- }
- quartz定时任务
- Spring+Quartz定时任务
- Quartz定时任务初学
- Quartz 定时任务
- spring quartz 定时任务
- Spring-quartz定时任务
- spring 定时任务 quartz
- Quartz定时任务学习
- Quartz定时任务学习
- spring quartz 定时任务
- spring Quartz 定时任务
- spring+quartz定时任务
- 定时任务 quartz使用
- quartz 定时任务
- Quartz定时任务配置
- Spring Quartz 定时任务
- Quartz定时任务
- quartz动态定时任务
- api接口
- Strange fuction 2899 (二分+数学求导)
- VS项目属性的一些配置项的总结
- Android常用adb命令
- vnc 安装使用记录
- 定时任务-quartz
- 使用升级助 升级了win10,黑屏,无桌面 解决方案
- sobel函数
- hdoj-1214-圆桌会议【逆序数】
- 8.2.1(1-2) 优化查询语句
- 权限验证原理篇
- 集群redis创建
- 设计模式笔记(五)--命令模式
- Oil Deposits