木头人的gravatar头像
木头人 2016-11-14 14:44:14
spring3.x自带的任务调度的注解实现
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.stephen.spring.quartz.itask.IMyTask;

@Component
public class MyTask implements IMyTask{
	/*每一秒执行一次*/
	@Scheduled(cron="0/1 * *  * * ? ")
	public void sayHello() {
		System.out.println("welcome my first quartz demo!");
	}

}

通过注解,spring简化了spring+quartz的配置,使代码更简洁,更可读性强。从java自带的TimerTask到quartz,再到spring,到处可以看见任务调度的影子,下面介绍spring的作业调度。

1.spring的xml的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 查找最新的schemaLocation 访问 http://www.springframework.org/schema/ -->
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd   
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
		http://www.springframework.org/schema/task 
		http://www.springframework.org/schema/task/spring-task-3.1.xsd ">
	<context:component-scan base-package="com.stephen.spring"/>
	
	<!-- 配置线程池 -->
	<task:scheduler id="myScheduler" pool-size="5" />
	<task:executor id="myExecutor" pool-size="5" />
	<!-- 开启注解 -->
	<task:annotation-driven scheduler="myScheduler" executor="myExecutor"/>
	
</beans>

2.定义自己的任务:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.stephen.spring.quartz.itask.IMyTask;

@Component
public class MyTask implements IMyTask{
	/*每一秒执行一次*/
	@Scheduled(cron="0/1 * *  * * ? ")
	public void sayHello() {
		System.out.println("welcome my first quartz demo!");
	}

}
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.stephen.spring.quartz.itask.IMyTask2;

@Component
public class MyTask2 implements IMyTask2{
	public final static String pattern="yyyy-MM-dd HH:mm:ss";
	
	/*使用注解时被注解的方法不能含有参数*/
	@Scheduled(cron="0/5 * *  * * ? ") 
	public void getCurrentDate() {
		DateFormat dateFormat=new SimpleDateFormat(pattern);
		String time=dateFormat.format(new Date().getTime());
		System.out.println(time);
	}

}

3.测试自己的任务调度:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestApp {
	public static void main(String[] args) {
		ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:spring/spring-quartz.xml");
	}
}

4.测试的结果:

spring3.x自带的任务调度的注解实现

5.主要的配置就是这些了,不当之处敬请谅解指出


打赏
最近浏览
牛魔王  LV12 2018年3月14日
hell1321312  LV2 2018年2月24日
朱曼殊  LV2 2018年2月8日
EricZH 2018年2月1日
暂无贡献等级
dfaghrs  LV19 2017年12月26日
kyoxue  LV10 2017年11月9日
203778513  LV9 2017年9月13日
Allen梅川酷子  LV15 2017年8月2日
千里草  LV7 2017年7月21日
邀仙赏月  LV16 2017年4月10日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友