SpringSchedule - 定时任务(XML方式)

简介: SpringSchedule - 定时任务(XML方式)

接着上一篇,这里使用spring配置文件的方式生成spring定时任务。


1、相应的web.xml没有什么变化,因此便不再罗列。同样的,相应的java代码业务逻辑改动也不大,只是在原来的基础上去掉@Component和@Scheduled(cron = "0/5 * * * * ?")参数,也就是把这个类和方法变成一个最简单的java类和方法就可以了。


2、既然是配置文件的方式,那么改动大的自然就是spring.xml配置,把原本用注解实现的定时功能放到配置中来,改动后的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:task="http://www.springframework.org/schema/task"
    xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd">
    <!-- 指定相应的包 -->
    <context:component-scan base-package="scheduleTest"/>
    <!-- 指定相应的类 -->
    <bean id="scheTest1" class="scheduleTest.ScheduleTest1"/>
     <!-- 指定要定时任务需要执行的业务逻辑的java类和方法 -->
    <bean id="scheTest11" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
        <property name="targetObject"> <ref local="scheTest1" /> </property> 
        <property name="targetMethod">
            <!--  要执行的方法名称  -->
            <value>schTest1</value> 
        </property> 
        <!-- 允许并发运行 -->
        <property name="concurrent" value="true" /> 
    </bean>
    <!--定义触发的时间 -->
    <bean id="scheTest1Cron" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
        <property name="jobDetail">
            <ref bean="scheTest11" /> 
        </property> 
        <property name="cronExpression"> 
            <value>0/5 * * * * ?</value> 
        </property> 
    </bean>
    <!--触发器 -->
    <bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
        <property name="triggers">
           <list> <ref local="scheTest1Cron" /> </list> 
        </property> 
    </bean>
</beans>

3、一开始我没有导入其他的jar包,然后启动报错classNotFound,如下:

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean] for bean with name 'scheTest11' defined in class path resource [spring1.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean

查了一下后发现这个包没有在spring-context.jar中,而是在spring-context-support.jar中,于是导入这个包。但之后启动继续报错:

java.lang.NoClassDefFoundError: org/quartz/JobDetail

这是说需要quartz这个包,但是没有导入,于是再次导入,启动依旧报错:

java.lang.NoClassDefFoundError: org/springframework/transaction/TransactionException

这个错误曾经见过,我知道是少了spring-tx.jar这个包,于是再次导入,启动之后终于见到想到的结果,五秒执行一次。

至此,使用spring配置文件的方式生成定时任务的功能实现,maven导包最终配置如下:


<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.1.7.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.0.9.RELEASE</version>
</dependency>
<dependency>
    <groupId>quartz</groupId>
    <artifactId>quartz</artifactId>
    <version>1.5.2</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>4.1.7.RELEASE</version>
</dependency>


转自:https://blog.csdn.net/tuzongxun/article/details/51577202


目录
相关文章
|
消息中间件 XML Java
SSM集成kafka——注解,xml配置两种方式实现
SSM集成kafka——注解,xml配置两种方式实现
539 0
SSM集成kafka——注解,xml配置两种方式实现
|
XML 安全 Java
微信公众平台安全模式下传输xml数据包时解密方式
微信公众平台安全模式下传输xml数据包时解密方式
571 0
|
XML druid Java
SpringBoot 整合 Mybatis(xml 方式)|学习笔记
快速学习 SpringBoot 整合 Mybatis(xml 方式)
215 0
SpringBoot 整合 Mybatis(xml 方式)|学习笔记
|
XML 数据格式 开发者
使用 Schema 的 sax 方式操作 xml(二)| 学习笔记
快速学习使用 Schema 的 sax 方式操作 xml。
使用 Schema 的 sax 方式操作 xml(二)| 学习笔记
|
XML Java 数据格式
鸿蒙学习笔记之使用 XML 方式创建布局
平常使用的 APP 应用会在屏幕上显示一个用户界面,该界面用来显示所有可被用户查看和交互的内容。而应用中所有的用户界面元素都是由 Component 和 ComponentContainer 对象构成。 Component 是绘制在屏幕上的一个对象,用户能与之交互。 ComponentContainer 是一个用于容纳其他 Component 和 ComponentContainer 对象的容器。
鸿蒙学习笔记之使用 XML 方式创建布局
|
XML JSON IDE
C#复杂XML反序列化为实体对象两种方式 (上)
C#复杂XML反序列化为实体对象两种方式
313 0
C#复杂XML反序列化为实体对象两种方式 (上)
|
XML Java 数据格式
spring学习6-使用xml方式实现spring基本应用
spring学习6-使用xml方式实现spring基本应用
294 0
spring学习6-使用xml方式实现spring基本应用
|
XML Java 数据格式
|
XML 数据格式
XML配置方式编写Servlet
XML配置方式编写Servlet
142 0
XML配置方式编写Servlet
|
XML 前端开发 Java
如何用基于XML配置的方式配置Spring?
如何用基于XML配置的方式配置Spring?
如何用基于XML配置的方式配置Spring?