spring中如何使用作业调度框架Quartz呢?
下文笔者讲述spring中使用Quartz作业调度框架的示例说明,如下所示
Quartz作业框架简介
Quartz 是一个开源的作业调度框架 它是一个纯Java语言编写的作业调度框架 并设计用于J2SE和J2EE应用中 它提供巨大的灵活性而不牺牲简单性 你能够用它来为执行一个作业而创建简单的或复杂的调度
Quartz下载地址
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.quartz-scheduler/quartz/1.7.3
applicationContext.xml
Xml代码
<!– 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>
Test.java :
//调用的类
public class Test {
//调用的方法
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—“);
}
}
各参数说明
1.JobDetail:
JobDetail是一个具体的类
2.Trigger:
触发器,用于定义Job何时执行
常用如:SimpleTrigger和CronTrigger
如果需要在一个固定的时间和重复次数或一个固定的间隔时间,则SimpleTrigger比较合适
如果有许多复杂的作业调度,那么CronTrigger比较合适
CronTrigger和Unix的cron机制基本一样,
只是一个 cron 表达式
如“ 0 0 8 * * ? ”会在每天上午 8 点触发
3.Scheduler 和 SchedulerFactory:
Scheduler负责管理Trigger,调度Job,
SchedulerFactory则是 Scheduler 工厂,负责生成Scheduler
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


