• Quartz 框架快速入门(四)


    转载 http://www.cnblogs.com/phinecos/archive/2008/09/03/1283376.html 

     Springscheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务。Spring通过JobDetailBeanMethodInvokingJobDetailFactoryBean实现Job的定义。后者更加实用,只需指定要运行的类,和该类中要运行的方法即可,Spring将自动生成符合Quartz要求的JobDetail

    在上一篇文章《Quartz 框架快速入门(三)》中我们将示例迁移到Web环境下了,但使用的是Quartz的启动机制,这一篇中我们将让Web服务器启动Spring,通过Spring的配置文件来进行任务的调度

    1,创建一个Web项目,加入spring.jarquartz-1.6.0.jarcommons-collections.jarjta.jar commons-logging.jar这几个包.

         2,创建一个类,在类中添加一个方法execute,我们将对这个方法进行定时调度.

    复制代码
    package com.vista.quartz;

    import java.util.Date;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;

    public class HelloWorld 
    {
        
    private static Log logger = LogFactory.getLog(HelloWorld.class);//日志记录器
        public HelloWorld()
        {
        }
        
    public void execute()
        {
            logger.info(
    "Kick your ass and Fuck your mother! - " + new Date()); 
        }
    }
    复制代码

    2. Spring配置文件applicationContext.xml 修改如下:

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
        
    xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

        
    <!-- 要调用的工作类 -->
        
    <bean id="quartzJob" class="com.vista.quartz.HelloWorld"></bean>
        
    <!-- 定义调用对象和调用对象的方法 -->
        
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            
    <!-- 调用的类 -->
            
    <property name="targetObject">
                
    <ref bean="quartzJob"/>
            
    </property>
            
    <!-- 调用类中的方法 -->
            
    <property name="targetMethod">
                 
    <value>execute</value>
            
    </property>
        
    </bean>
        
    <!-- 定义触发时间 -->
        
    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
            
    <property name="jobDetail">
                
    <ref bean="jobtask"/>
            
    </property>
            
    <!-- cron表达式 -->
            
    <property name="cronExpression">
                
    <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
            
    </property>
        
    </bean>
        
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
        
    <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            
    <property name="triggers">
                
    <list>
                   
    <ref bean="doTime"/>
                
    </list>
            
    </property>
        
    </bean>
    </beans>
    复制代码

    3,先在控制台中对上面的代码进行测试,我们要做的只是加载Spring的配置文件就可以了,代码如下:

    复制代码
    package com.vista.quartz;

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

    public class Test 
    {
        
    public static void main(String[] args) 
        {
             System.out.println("Test start.");
                ApplicationContext context 
    = new ClassPathXmlApplicationContext("applicationContext.xml");
                
    //如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
                
    //context.getBean("startQuertz");
             System.out.print("Test end..");
        }
    }
    复制代码

    4,然后将Web.xml修改如下,让tomcat在启动时去初始化Spring

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns
    ="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >
         
    <context-param>
            
    <param-name>contextConfigLocation</param-name>
            
    <param-value>
                /WEB-INF/classes/applicationContext.xml
            
    </param-value>
        
    </context-param> 
        
        
    <servlet>
            
    <servlet-name>SpringContextServlet</servlet-name>
            
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
            
    <load-on-startup>1</load-on-startup>
        
    </servlet> 

      
    <welcome-file-list>
        
    <welcome-file>index.jsp</welcome-file>
      
    </welcome-file-list>
    </web-app>
    复制代码

    5,最后启动Tomcat,测试结果如下图所示:

  • 相关阅读:
    net5 webapi中 SwaggerUI如何进行版本控制
    动态菜单/权限管理的实现效果(数据前提:须做好 菜单、按钮、角色、用户等相关功能)
    MOS管的引脚,G、S、D分别代表什么?
    关系再好,也不要跟人透露这三个隐私。
    Linux 学习笔记
    算法 蓄水问题
    算法 等概率问题
    算法 字符串类问题(一)
    效率,生产力和用户友好的应用程序是GeneXus为Salinas集团带来的一些好处
    Multillantas Nieto通过智能设备和GeneXus将生产率提高了50%
  • 原文地址:https://www.cnblogs.com/chenying99/p/2798407.html
Copyright © 2020-2023  润新知