首页 > 代码库 > Spring简单的任务调度

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="http://www.mamicode.com/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="http://www.mamicode.com/1000"></property>
     <!-- 配置重复执行的时间间隔为5秒 -->
     <property name="repeatInterval" value="http://www.mamicode.com/5000"></property>
    </bean>
    
    <!-- 配置触发器 为指定时间执行 -->
    <bean id="mycronTrig" class="org.springframework.scheduling.quartz.CronTriggerBean">
      <!-- 注入任务类 -->
        <property name="jobDetail" ref="remindjob2"></property>
       <!-- 配置Cron表达式 顺序为  秒  分  时  天   月  星期   年  也就是星期一到星期五天22点执行-->
       <property name="cronExpression" value="http://www.mamicode.com/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>

Spring简单的任务调度