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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。