关于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>

`

不积跬步无以至千里,不积小流无以成江河
原文地址:https://www.cnblogs.com/zhcnn/p/13393110.html