• 关于SpringMVC整合quartz 框架实现定时任务,注入service失败的问题!


    1.spring以及springmvc做整合需要导入相应的jar包,由于使用的是maven项目,直接在pom.xml中引入依赖:
    `

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.3.0</version>
        </dependency>`
    

    2.编写一个我们自己的job类:
    `
    @Component
    public class OrderCancelJob {

    @Autowired
    UserService userService;
    @RequestMapping("/order.do")
    public String orderCancel (){
    
    
        System.out.println("1111111111111111111");
    
        boolean bo = userService.orderCancel(2);
    
        System.out.println("2222222222222222222222");
        if (bo){
    
            System.out.println("已经超时,订单取消");
    
        }else{
    
            System.out.println("订单取消失败");
        }
    
        return "success";
    }
    

    }
    3.导入相关的依赖之后我们需要一个在项目启动指定web.xml读取的配置类

    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet

        <!--app-servlet.xml  spring-servlet.xml  srping-config.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:spring-*.xml</param-value>
        </init-param>
        <!--随Tomcat启动初始化-->
        <load-on-startup>1</load-on-startup>
    
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>`
    

    4.配置spring-quartz的配置文件
    `

    <!--
      Spring整合Quartz进行配置遵循下面的步骤:
      1:定义工作任务的Job
      2:定义触发器Trigger,并将触发器与工作任务绑定
      3:定义调度器,并将Trigger注册到Scheduler
    

    -->

    <!-- 1:定义任务的bean ,这里使用JobDetailFactoryBean,也可以使用MethodInvokingJobDetailFactoryBean ,配置类似-->
    <bean name="lxJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    
        <property name="targetObject">
            <ref bean="orderCancelJob"/><!-- 指定是哪个定时任务类 -->
        </property>
        <property name="targetMethod">
            <value>orderCancel</value><!-- 指定要执行的类里面的哪个方法 -->
        </property>
    
    </bean>
    
    <!-- 2:定义触发器的bean,定义一个Cron的Trigger,一个触发器只能和一个任务进行绑定 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!-- 指定Trigger的名称 -->
        <property name="name" value="trigger1"/>
        <!-- 指定Trigger的名称 -->
        <property name="group" value="trigger_group1"/>
        <!-- 指定Tirgger绑定的JobDetail -->
        <property name="jobDetail" ref="lxJob"/>
        <!-- 指定Cron 的表达式 ,当前是每隔5s运行一次 -->
        <property name="cronExpression" value="*/5 * * * * ?" />
    </bean>
    
    <!-- 3.定义调度器,并将Trigger注册到调度器中 -->
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
            </list>
        </property>
        <!-- 添加 quartz 配置,不写默认即可 -->
    
    </bean>
    

    `

    不积跬步无以至千里,不积小流无以成江河
  • 相关阅读:
    深入理解jvm分享培训pdf(转载) 老李
    innobackupex自动备份脚本(增量备份,自动压缩)
    多线程调用生成主键流水号存储过程产生主键冲突问题解决方案
    mysql 5.7新数据库sys解析(一)
    根据日期累加金额的mysql
    mysql字符串分割函数(行转列)
    使用innobackupex备份mysql数据库
    css学习inlineblock详解及dispaly:inline inlineblock block 三者区别精要概括
    html良好结构之豆瓣风格
    HTML5学习笔记html5与传统html区别
  • 原文地址:https://www.cnblogs.com/zhcnn/p/13393110.html
Copyright © 2020-2023  润新知