spring定时任务的几种实现
2018-07-19 · 国内最优秀java资源共享平台
关注
展开全部
1、Java自带的java.util.Timer类,自定义一个类继承TimerTask
例子:
public class TestTimerTask {
Timer timer;
public TestTimerTask(int a) {
timer = new Timer();
timer.schedule(new GoodTimerTask(),0, 1000*a);
}
public static void main(String[] args) {
System.out.println("About to schedule task.");
new TestTimerTask(3);
}
class GoodTimerTask extends TimerTask{
@Override
public void run() {
System.out.println("Timer running!");
}
}
}
2、Spring3.0以后自带的task
//一、在applicationContext.xml配置的方式
//1、准备jar包
// (1)spring核心jar包
//2、在项目中写个类
@Service
public class BookScheduleTask {
@Resource
private BookService bookService;
public Page<Book> findAllBook(){ //不带参数
System.out.println("BookScheduleTask.findAllBook()");
return bookService.findBook(1);
}
}
//3、在ApplicationContext.xml配置文件中写如下配置:
<!-- 自动扫描 -->
<context:component-scan base-package="com" />
<!-- spring框架的Scheduled定时器 -->
<task:scheduled-tasks>
<task:scheduled ref="bookScheduleTask" method="findAllBook" cron="0 0 12 * * ?"/>
</task:scheduled-tasks>
//二、基于注解的spring定时器
// 1、同上,准备好spring的jar包
// 2、在项目中创建一个类,用于执行定时任务的类。如下:
@Component("bookScheduleTask")
public class BookScheduleTask {
@Resource
private BookService bookService;
@Scheduled(cron="0 50 14 * * ?")
public void findAllBook(){
System.out.println("BookScheduleTask.findAllBook()");
bookService.findBook(1);
}
}
// 说明:基于注解的方法,@Component("bookScheduleTask")表示定义了一个别名。
// @Scheduled(cron="0 50 14 * * ?")表示:该注解下的方法是一个时间任务,在cron="0 50 14 * * ?"(14:50)执行findAllBook()方法
3、使用quartz,重量级框架
例子:
public class TestTimerTask {
Timer timer;
public TestTimerTask(int a) {
timer = new Timer();
timer.schedule(new GoodTimerTask(),0, 1000*a);
}
public static void main(String[] args) {
System.out.println("About to schedule task.");
new TestTimerTask(3);
}
class GoodTimerTask extends TimerTask{
@Override
public void run() {
System.out.println("Timer running!");
}
}
}
2、Spring3.0以后自带的task
//一、在applicationContext.xml配置的方式
//1、准备jar包
// (1)spring核心jar包
//2、在项目中写个类
@Service
public class BookScheduleTask {
@Resource
private BookService bookService;
public Page<Book> findAllBook(){ //不带参数
System.out.println("BookScheduleTask.findAllBook()");
return bookService.findBook(1);
}
}
//3、在ApplicationContext.xml配置文件中写如下配置:
<!-- 自动扫描 -->
<context:component-scan base-package="com" />
<!-- spring框架的Scheduled定时器 -->
<task:scheduled-tasks>
<task:scheduled ref="bookScheduleTask" method="findAllBook" cron="0 0 12 * * ?"/>
</task:scheduled-tasks>
//二、基于注解的spring定时器
// 1、同上,准备好spring的jar包
// 2、在项目中创建一个类,用于执行定时任务的类。如下:
@Component("bookScheduleTask")
public class BookScheduleTask {
@Resource
private BookService bookService;
@Scheduled(cron="0 50 14 * * ?")
public void findAllBook(){
System.out.println("BookScheduleTask.findAllBook()");
bookService.findBook(1);
}
}
// 说明:基于注解的方法,@Component("bookScheduleTask")表示定义了一个别名。
// @Scheduled(cron="0 50 14 * * ?")表示:该注解下的方法是一个时间任务,在cron="0 50 14 * * ?"(14:50)执行findAllBook()方法
3、使用quartz,重量级框架
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询