任务调度 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 接口,这样在结果执行完毕是,能够直接回调处理。

 

posted @ 2017-06-02 16:17  眼泪,还是流了  阅读(1251)  评论(0编辑  收藏  举报