大背景java
现代的 Web 应用程序框架在范围和复杂性方面都有所发展,应用程序的每一个底层组件也必须相应地发展。做业调度是现代系统中对 Java 应用程序的通常要求,并且也是对 Java 开发人员一向的要求。虽然目前的调度技术比起原始的数据库触发器标志和独立的调度器线程来讲,已经发展了许多,可是做业调度仍然不是个小问题spring
技术选型数据库
干货bash
Spring Task,能够将它比做一个轻量级的Quartz,并且使用起来很简单,除spring相关的包外不须要额外的包,并且支持两种使用方式一、注解 二、配置app
Spring Task 注解方式使用说明框架
一、applicationContext.xmlspa
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config /> <!-- spring扫描注解的配置 --> <context:component-scan base-package="com.antation" /> <!-- 开启这个配置,spring才能识别@Scheduled注解 --> <task:annotation-driven scheduler="qbScheduler" mode="proxy" /> <task:scheduler id="qbScheduler" pool-size="10" /> </beans>
二、Java普通类线程
import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component("taskJob") public class TaskJob { @Scheduled(cron = " 0/2 * * * * ?") // 每两秒执行一次 public void myMethod() { System.out.println(new Date().toLocaleString() + " 我是基于注解的后台任务..."); } }
Spring Task 配置方式使用说明component
一、applicationContext.xmlxml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 定时任务要执行的方法 --> <bean id="taskJob" class="com.task.TaskJob" /> <bean id="taskJob2" class="com.task.TaskJob2" /> <!--用于定时任务的执行 --> <task:scheduled-tasks> <!-- 指定要运行的类的方法,每2秒执行一次 --> <task:scheduled ref="taskJob" method="myMethod" cron=" 0/2 * * * * ?" /> <!-- 指定要运行的类的方法,每2秒执行一次 --> <task:scheduled ref="taskJob2" method="myMethod" cron=" 0/3 * * * * ?" /> </task:scheduled-tasks> </beans>
二、Java普通类
// 定时任务1 import java.util.Date; public class TaskJob { public void myMethod() { System.out.println(new Date().toLocaleString() + " 我是后台任务1..."); } } //定时任务2 import java.util.Date; public class TaskJob2 { public void myMethod() { System.out.println(new Date().toLocaleString() + " 我是后台任务2..."); } }
结论
以上两种方式,均可以轻松完成定时任务。使用哪一种,看我的喜爱。
验证
启动服务,控制台每两秒输入一条信息,便可完成验证。
以上
谢谢!
2018/04/17 16:15 章力
于 陕西·西安·逸翠园二期
整理于采集分析项目