Spring_定时任务_转

el/2024/2/26 0:04:23
这几天因为工作的需要,用到了spring的定时任务的功能,网上查资料,并且实际运用了一下,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,下面的这篇文章我觉得还是很好的,摘录下来,供以后参考用 package util;
import org.apache.log4j.*;
public class TaskJob {
public static Logger log = Logger
.getLogger(TaskJob.class);
public void SayHello() {
// TODO Auto-generated method stub
try {
log.info("处理任务开始>........");
// 业务逻辑代码调用
System.out.println("时间[" + new java.util.Date().toLocaleString()
+ "]----->大家好啊!");
log.info("处理任务结束!");
} catch (Exception e) {
log.error("处理任务出现异常", e);
}
}

}

2.接下来的在spring 里配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="taskJob" class="util.TaskJob" />

<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="taskJob" />
</property>
<property name="targetMethod">
<value>SayHello</value>
</property>
</bean>
<!-- 配置触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 -->
<property name="jobDetail">
<ref bean="methodInvokingJobDetail" />
</property>
<!-- 每天的8点到21点每隔1分钟触发,具体说明见附录 -->
<property name="cronExpression">
<value>0 * 08-21 * * ?</value>
</property>

</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 添加触发器 -->
<property name="triggers">
<list>
<ref local="cronTrigger" />
</list>
</property>
</bean>

</beans>

3.测试执行的类,只要把spring的配置文件加载了就可以看到定时任务运行了。
package util;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestApp {


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("加载spring配置文件....");
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("加载配置文件完毕!");
// ApplicationContext context2 = new ClassPathXmlApplicationContext("test/timerTask/quartzTimer.xml");
}
}


一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:

代表含义 是否必须 允许的取值范围 允许的特殊符号

秒 是 0-59 , - * /

分钟 是 0-59 , - * /

小时 是 0-23 , - * /

月份中的天数 是 1-31 , - * / ? L W C

月份 是 1-12或JAN-DEC , - * /

星期中的天数 是 1-7或SUN-SAT , - * / ? L #

年 否 empty,1970-2099 , - * /


*:代表所有可取的值,比如说,如果分钟为*,那么就表示每一分钟;

?:只有月份中的天数和星期中的天数可以使用?来表示,因为“月份中的天数”和“星

期中的天数”不能同时设值,所以我们可以通过?来表明不想设置的那个元素;

-:用来指定一个范围类的值,比如说,小时为”10-12”,它就表示10点、11点、12点

,:逗号用来分隔一个元素的多个值,比如说“星期中的天数”为"MON,WED,FRI",

它就表示周一、周三和周五。

/:斜杠用来表示间隔,比如说,秒数为5/10,那么它就表示第5秒、第15秒、第

25秒、第35秒、第45秒和第55秒。斜杠前的数字表示起始位置,后面的数字表

示每次增长的数量。

L:仅用在“月份中的天数”和“星期中的天数”元素中。如果是前者,它代表某月的

最后一天;如果是后者,它就表示是周六。有一点特别的,当表示“星期中的天数”

时,L可以和数字一起用,比如”6L”,它就表示这个月的最后一个星期五。

W:只能用来表示“月份中的天数”,和数字一起使用。比如说15W,它就表示离这

个月15号最近的工作日。使用W时,“月份中的天数”必须为一个指定的日期,

而不能是一个范围的日期。

#:只能用来表示“星期中的天数”。例如5#4,它表示某个月中第四个星期四,2#1

表示某个月中第一个星期一。#前面的数字代表星期,后面的数字表示是第几个。


附:cronExpression表达式解释:
0 0 12 * * ?---------------在每天中午12:00触发
0 15 10 ? * *---------------每天上午10:15 触发
0 15 10 * * ?---------------每天上午10:15 触发
0 15 10 * * ? *---------------每天上午10:15 触发
0 15 10 * * ? 2005---------------在2005年中的每天上午10:15 触发
0 * 14 * * ?---------------每天在下午2:00至2:59之间每分钟触发一次
0 0/5 14 * * ?---------------每天在下午2:00至2:59之间每5分钟触发一次
0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次
0 0-5 14 * * ?---------------每天在下午2:00至2:05之间每分钟触发一次
0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和2:44时触发
0 15 10 ? * MON-FRI---------------从星期一至星期五的每天上午10:15触发
0 15 10 15 * ?---------------在每个月的每15天的上午10:15触发
0 15 10 L * ?---------------在每个月的最后一天的上午10:15触发
0 15 10 ? * 6L---------------在每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6L 2002-2005---------------在2002, 2003, 2004 and 2005年的每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6#3---------------在每个月的第三个星期五的上午10:15触发
0 0 12 1/5 * ?---------------从每月的第一天起每过5天的中午12:00时触发
0 11 11 11 11 ?---------------在每个11月11日的上午11:11时触发.­

http://www.ngui.cc/el/4893632.html

相关文章

HTML_Css_张龙篇

css.css文件: /*p元素用classright 靠右对齐 p元素用classcenter 局中对齐*/p.right {text-align: right}p.center {text-align: center}/*对所有的p只用left对齐**/p {text-align: left}/*所有的h1-h6:用蓝色样式*/h1,h2,h3,h4,h5,h6 { color: blue }/*页面中所有classcent…

精通CSS.DIV网页样式与布局_第二章

<html><head><title>class选择器</title><style type"text/css"><!--.one{ color:red; /* 红色 */ font-size:18px; /* 文字大小 */}.two{ color:green; /* 绿色 */ font-size:20px; /* 文字大小 */}.three{ color:cyan; /*…

(转) Struts2 URL参数 s:if 判断应用

Struts2的s:if标签很怪异&#xff0c;下面来具体地看看&#xff0c;如何用s:if标签来判断URL中的参数。 访问一个带有URL参数的页面&#xff0c;如&#xff1a;http://localhost:8080/a.jsp?namexht555 # <% page language"java" contentType"text/html; ch…

从 iBatis 到 MyBatis(转)

从 iBatis 到 MyBatis&#xff0c;你准备好了吗&#xff1f; 对于从事 Java EE 的开发人员来说&#xff0c;iBatis 是一个再熟悉不过的持久层框架了&#xff0c;在 Hibernate、JPA 这样的一站式对象 / 关系映射&#xff08;O/R Mapping&#xff09;解决方案盛行之前&#xff0c…

Spring使用AOP时ClassCastException问题

[sizelarge]Spirng实现AOP采用动态代理还是CGLIB代理&#xff0c;两种方式如下&#xff1a;[/size] [sizemedium] 1、Spring&#xff1a;自动选择。[/size] 如果有实现接口采用JDK动态代理 如果没有实现接口采用cglib代理 <aop:aspectj-autoproxy proxy-target-class&qu…

Java SE 第一讲_JDK下载_安装_Java程序编译与执行

[sizelarge][b]Java SE 第一讲&#xff1a;[/b][/size] Java SE&#xff1a;Java Standard Edition Java ME: Java Micro Edition Java EE&#xff1a;Java Enterprise Edition Java是由Sun公司推出的&#xff08;2010年初被Oracle公司收购&#xff09;。 收购价格&#xff1…

Java SE 第二讲_原生数据类型

[b]Java SE 第二讲&#xff1a;[/b] 1. Windows: notepad, editplus, ultraedit, gvim Linux: vi, vim, gedit [colorred]2. Java中的数据类型分为两大类&#xff1a; 1&#xff09; 原生数据类型 &#xff08;Primitive Data Type&#xff09;共8种 2&#xff09; 引用类型…

Java SE 第三讲 Java原生数据类型

[sizemedium][b]Java SE 第三讲&#xff1a;[/b][/size] [colorred]1. Java中的原生数据类型共有8种&#xff1a;[/color] 1&#xff09; 整型&#xff1a;使用int表示。&#xff08;32位&#xff09; 2&#xff09; 字节型&#xff1a;使用byte表示。&#xff08;表示-128&…

Java SE 第四讲(运算符 Operator)

[sizemedium][b]Java SE 第四讲&#xff1a;[/b][/size] 1. 当有若干个变量参与运算时&#xff0c;结果类型取决于这些变量中表示范围最大的那个变量类型。比如&#xff0c;参与运算的变量中&#xff0c;有整型int&#xff0c;有双精度浮点型double&#xff0c;有短整型short&a…

Java SE 第五讲:运算符续 Operator cont

[sizemedium][b]Java SE 第五讲&#xff1a;[/b][/size] 1. 关系运算符&#xff1a;大于&#xff08;>&#xff09;、小于&#xff08;<&#xff09;、等于&#xff08;&#xff09;、不等于&#xff08;!&#xff09;、大于等于&#xff08;>&#xff09;、小于等于&…