zoukankan      html  css  js  c++  java
  • 任务调度 Spring Task 4(二 )

    注解和配置文件两种

    第一种:配置文件方式

    第一步:编写作业类

    即普通的pojo,如下:

    1 import org.springframework.stereotype.Service;  
    2 @Service  
    3 public class TaskJob {  
    4       
    5     public void job1() {  
    6         System.out.println(“任务进行中。。。”);  
    7     }  
    8 }  
    Java代码

     第二步:在spring配置文件头中添加命名空间及描述

    1 <</span>beans xmlns="http://www.springframework.org/schema/beans"  
    2     xmlns:task="http://www.springframework.org/schema/task"   
    3     。。。。。。  
    4  
    5 http://www.springframework.org/schema/task
    6 http://www.springframework.org/schema/task/spring-task.xsd
    7 > 
    XML代码

     第三步:spring配置文件中设置具体的任务

    1  <</span>task:scheduled-tasks>   
    2         <</span>task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/>   
    3 </</span>task:scheduled-tasks>  
    4   
    5 <</span>context:component-scan base-package=" cn.springmvc" />  
    XML代码

    第四步:启动测试

     1 package cn.springmvc.quartz;
     2 import org.springframework.context.ApplicationContext;
     3 import org.springframework.context.support.ClassPathXmlApplicationContext;
     4 
     5 public class StartConfig {
     6 public static void main(String[] args){
     7 System.out.println("启动spring容器");
     8 ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
     9 }
    10 }
    示例

    二:annotation 注解配置

    第一步:配置测试类

     1 package cn.springmvc.quartz;
     2 
     3 import org.springframework.scheduling.annotation.Scheduled;
     4 import org.springframework.stereotype.Component;
     5 
     6 @Component("annotationTask")
     7 public class AnnotationTask {
     8 @Scheduled(cron="0/5 * * * * ? ") //每5秒执行一次
     9 public void job1() {
    10 System.out.println("spring task 注解使用。。。任务进行中");
    11 }
    12 }
    测试代码

    第二步: 配置配置文件:

    1 http://www.springframework.org/schema/task
    2 http://www.springframework.org/schema/task/spring-task.xsd
    3 。。。
    4 
    5 <</span>task:annotation-driven scheduler="qbScheduler" mode="proxy"/> // 理论上只需要这么一句就可以了
    6 <</span>task:scheduler id="qbScheduler" pool-size="10"/>
    配置文件

    第三步:启动测试

     1 package cn.springmvc.quartz;
     2 import org.springframework.context.ApplicationContext;
     3 import org.springframework.context.support.ClassPathXmlApplicationContext;
     4 
     5 public class StartConfig {
     6 public static void main(String[] args){
     7 System.out.println("启动spring容器");
     8 ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
     9 }
    10 }
    示例

    实现TaskScheduler 接口的ThreadPoolTaskExecutor 继承关系。 
    ThreadPoolTaskExecutor 类

    ThreadPoolTaskExecutor 是TaskExecutor 的最主要实现类之一。该类的核心继承关系如下图所示。 
    ThreadPooltaskexecutor 类

    ThreadPoolTaskExecutor 接口扩展了重多的接口,让其具备了更多的能力。要实现异步需要标注@Async 注解:

      • AsyncTaskExecutor 增加了返回结果为Future 的submit() 方法,该方法的参数为Callable 接口。相比Runnable 接口,多了将执行结果返回的功能。
      • AsyncListenableTaskExecutor 接口允许返回拥有回调功能的ListenableFuture 接口,这样在结果执行完毕是,能够直接回调处理。
  • 相关阅读:
    go语言从零学起(三) -- chat实现的思考
    go语言从零学起(二)--list循环删除元素(转载)
    go语言从零学起(一) -- 文档教程篇
    Spring框架事务支持模型的优势
    Thymeleaf
    社保到底是多交好,还是少交好?
    使用静态工厂方法而不是构造器
    EJB、RMI、XMLRPC、Hessian、Thrift 、Protobuf
    MySQL存储过程
    MySQL常用功能语句分类总结
  • 原文地址:https://www.cnblogs.com/yang82/p/6933890.html
Copyright © 2011-2022 走看看