Spring简单的任务调度

package serivce;

import java.util.List;

import entity.Book;
 /**
  * 图书信息业务逻辑层接口
  * @author 尹涛
  *
  */
public interface BookSerivce {
    /**
     * 获取所有图书信息
     * @return 图书列表
     */
  public List<Book> getAll();

  public void show();
}

上面的serivce代码段 与dao层代码基本一致

下面的的代码为serivce实现类代码主要用于测试任务调度

package serivce.impl;

import java.util.List;

import dao.BookDao;

import entity.Book;
import serivce.BookSerivce;
 /**
  * 业务逻辑层接口实现类
  * @author 尹涛
  *
  */
public class BookSerivceImpl implements BookSerivce {
    private BookDao bd;  //数据访问层对象

    public void setBd(BookDao bd) {
        this.bd = bd;
    }

    @Override
    public List<Book> getAll() {
        List<Book> books=bd.getAll();
        System.out.println("书名\t作者");
        for (Book book : books) {
            System.out.println(book.getName()+"\t"+book.getAuthor());
        }
        System.out.println("\n");
        return bd.getAll();
    }

    @Override
    public void show() {
        System.out.println("执行了指定时间段代码.....");
        bd.show();

    }

}

下面就是主要的重点配置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"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

    <!--定义dbcp数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
      <!-- 指定JDBC驱动类 -->
      <property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
      <!-- 提供链接数据库的URL地址 -->
      <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
      <!-- 提供链接数据库的用户名和密码 -->
      <property name="username" value="scott"></property>
      <property name="password" value="bdqn"></property>
    </bean>
    <!-- 定义 SessionFactory bean-->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- 为LocalSessionFactoryBean注入定义好的数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 添加对象关系映射文件 -->
        <property name="mappingDirectoryLocations">
        <list>
         <!-- src目录下的 entity包-->
         <value>classpath:entity</value>
        </list>
        </property>
    </bean>
    <!-- 注入dao层 -->
    <bean id="bookDao" class="dao.impl.BookDaoImpl" p:sessionFactory-ref="sessionFactory"></bean>
    <!-- 注入Serivce层 -->
    <bean id="bookSerivce" class="serivce.impl.BookSerivceImpl" p:bd-ref="bookDao"></bean>

    <!-- 配置任务对象  该bean为间隔时间执行-->
    <bean id="remindjob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
      <!-- 配置要调用的类:你要作为任务类的那个javaBean对象 -->
        <property name="targetObject" ref="bookSerivce"></property>
        <!-- 配置要调用的方法:你要作为任务方法的那个业务方法 -->
        <property name="targetMethod" value="getAll"></property>
    </bean>

    <!-- 配置任务对象  该bean为指定时间执行-->
    <bean id="remindjob2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
      <!-- 配置要调用的类:你要作为任务类的那个javaBean对象 -->
        <property name="targetObject" ref="bookSerivce"></property>
        <!-- 配置要调用的方法:你要作为任务方法的那个业务方法 -->
        <property name="targetMethod" value="show"></property>
    </bean>

    <!-- 配置触发器 间隔多长时间触发 -->
    <bean id="mysimpTrig"
      class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <!--配置JobDetail ref-引用  上面配置的任务对象 -->
    <property name="jobDetail" ref="remindjob"></property>
    <!-- 配置启动后延迟1秒执行 1000毫秒-->
     <property name="startDelay" value="1000"></property>
     <!-- 配置重复执行的时间间隔为5秒 -->
     <property name="repeatInterval" value="5000"></property>
    </bean>

    <!-- 配置触发器 为指定时间执行 -->
    <bean id="mycronTrig" class="org.springframework.scheduling.quartz.CronTriggerBean">
      <!-- 注入任务类 -->
        <property name="jobDetail" ref="remindjob2"></property>
       <!-- 配置Cron表达式 顺序为  秒  分  时  天   月  星期   年  也就是星期一到星期五天22点执行-->
       <property name="cronExpression" value="0 54 22 ? * 2-6"></property>
    </bean>

    <!-- 配置调度器 -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <!-- 指定触发器 间隔时间段执行-->
         <ref bean="mysimpTrig"/>
         <!-- 指定时间执行 -->
         <ref bean="mycronTrig"/>
      </list>
    </property>
  </bean>
    </beans>
时间: 2024-10-13 05:45:22

Spring简单的任务调度的相关文章

Spring学习笔记一(Spring简单介绍)

1.前言 从今天起开始写几篇关于Spring的文章,来总结一下,近来的学习情况,也想与大家分享一下学习Spring的心得和体会.希望大家能够多多指正.  2.Spring简单介绍 上图是有关Spring的整个架构图,从图中我们可以看出,Spring主要包括AOP.数据访问,WEB访问等几大块内容. Spring是一个基于JAVA的轻量级J2EE的应用框架. 那么Spring能干什么呢?目前我们看到市面上有很多的框架,比如Struts2+Spring.Spring+Servlet.Spring+i

Spring简单的小例子SpringDemo,用于初略理解什么是Spring以及JavaBean的一些概念

一.开发前的准备 两个开发包spring-framework-3.1.1.RELEASE-with-docs.zip和commons-logging-1.2-bin.zip,将它们解压,然后把Spring开发包下dist目录的所有包和commons-logging包下的commons-logging-1.1.1.jar复制到名为Spring3.1.1的文件夹下.那么Spring开发所需要的包就组织好了. 二.建立项目,导入包 在项目节点上右键,Build Path/ADD Libraries/U

Spring+quartz 动态任务调度

需求是这样的:系统中会有很多的执行时间,三个或者四个这样,不确定,以后可能是五个!当用户在页面添加执行时间时,我们后台也要对应执行用户添加的时间. 数据库设计: DROP TABLE IF EXISTS `test_time_task`; CREATE TABLE `test_time_task` ( `status` int(11) DEFAULT NULL COMMENT '状态:0为正常,1为禁用', `job` varchar(255) CHARACTER SET utf8 DEFAUL

Spring简单属性注入和集合属性注入

属性注入是Spring中较为重要的一项功能.下面就讲讲简单属性注入和集合属性注入的具体操作. 步骤: ①首先不管是简单属性注入还是集合属性注入,都要使用到property标签 ②然后如果是简单属性注入的话直接给property标签的value值赋值即可,其中的value的类型我们可以不指定,框架会自        动识别,当然我们也可以指定,指定的形式如:java.lang.String (要写完成的类型).其也有两种方式: 第一种方式:<property name="类中属性名"

spring timetask 定时任务调度

作者:Garry1115 定时任务调度即在设置的特定时间执行特定的任务,不需要人工干预. spring timertask spring 自身所带定时任务类,不需要引入第三方jar包,使用方式如下: EmailReportTask.java package com.zwx.core; import java.util.TimerTask; public class EmailReportTask extends TimerTask{ @Override public void run() { S

比Spring简单的IoC容器

比Spring简单的IoC容器 Spring 虽然比起EJB轻量了许多,但是因为它需要兼容许多不同的类库,导致现在Spring还是相当的庞大的,动不动就上40MB的jar包, 而且想要理解Spring的内部运行机制,阅读它的代码非常重要, 但是往往它的代码非常的"多". 现在根据Spring对Bean的生命周期的处理, 编写出一款非常小的IoC容器, 没有了对XML的解析,而是通过对Config对象的构造而完成IoC配置文件的声明, 相比较XML的方式, 对重构软件非常具有好处, 并且

Spring整合定时任务调度框架Quartz实战

定时的任务处理在程序开发中应用的相当普遍,之前一直使用JDK的Timer类库来做任务调度功能不是很方便,因为它不能像cron服务那样可以指定具体年.月.日.时和分的时间,我们只能将时间通过换算成微秒后传给它,而在quartz中我们只需要设置cronExpression就可以完成定时的周期性的方法调用.Quartz中最核心的是任务调度器Scheduler,它负责管理Job,Trigger和 Calendar,而每一个Job就是一个需要执行任务的java类,在Schelduler调度任务时 执行的就

java spring 简单封装出自己的DAO Service实现

package com.jade.basung.bss.module.common; import com.jade.framework.base.criterion.Criteria; import com.jade.framework.base.util.PagingList; import com.jade.basung.bss.BaseException; /** * dao层公共接口 * * @date 15/8/28 下午5:23 * @version 1.0 */ public i

Spring简单获得实体类的实例, 使用ApplicationContext()方法的几点注意事项

今天接触了Spring的初步用法, 感觉跟实例化实体类没啥区别, 像这种简单的代码还不如直接实例化来的方便, 这样使用Spring的话总共需要三个文件 第一个当然是一个实体类了, 定义好属性, getter和setter方法, 别忘了构造一个无参的构造方法. public class HelloWorld { private String mingzi; private String dizhi; private User user; public void sayHello() { Syste