java三大框架实现任务调度——IRemindService
来源:互联网 发布:心中心网络道场 编辑:程序博客网 时间:2024/05/22 02:27
java实现任务调度,主要分为几个步骤:
1.创建一个服务
2.创建一个任务类,将服务作为一个任务去完成(实现job接口)
3.创建一个任务类实体
4.创建一个触发器,指定触发规则
5.创建一个调度,绑定任务和触发器
接下来我们先看看IRemindService接口的代码:
/** * @Title: IRemindService.java* @Package org.service* @Description: TODO该方法的主要作用:* @author A18ccms A18ccms_gmail_com * @date 2017-5-26 下午7:54:13* @version V1.0 */package org.service; /** * * 项目名称:spring_Schop07 * 类名称:IRemindService * 类描述: * 创建人:Mu Xiongxiong * 创建时间:2017-5-26 下午7:54:13 * 修改人:Mu Xiongxiong * 修改时间:2017-5-26 下午7:54:13 * 修改备注: * @version * */public interface IRemindService {void sendMsg();void sendMsg(String userName);}它的实现类也很简单,简单看看就行,重点不在这里,这里只是拟定一个任务,主要的调度在后面:
/** * @Title: RemindServiceImpl.java* @Package org.service.impl* @Description: TODO该方法的主要作用:* @author A18ccms A18ccms_gmail_com * @date 2017-5-26 下午7:55:19* @version V1.0 */package org.service.impl;import org.service.IRemindService; /** * * 项目名称:spring_Schop07 * 类名称:RemindServiceImpl * 类描述: * 创建人:Mu Xiongxiong * 创建时间:2017-5-26 下午7:55:19 * 修改人:Mu Xiongxiong * 修改时间:2017-5-26 下午7:55:19 * 修改备注: * @version * */public class RemindServiceImpl implements IRemindService {/**(非 Javadoc) * <p>Title: sendMsg</p> * <p>Description(描述): </p> * @see org.service.IRemindService#sendMsg() */@Overridepublic void sendMsg() {System.out.println("像张三发送一条信息!");}@Overridepublic void sendMsg(String userName) {System.out.println("像"+userName+"发送一条信息!");}}
要想实现任务调度,那么久得实现Job接口,具体代码如下:
/** * @Title: RemindJob.java* @Package org.service.impl* @Description: TODO该方法的主要作用:* @author A18ccms A18ccms_gmail_com * @date 2017-5-26 下午7:58:09* @version V1.0 */package org.service.impl;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.service.IRemindService; /** * * 项目名称:spring_Schop07 * 类名称:RemindJob * 类描述: * 创建人:Mu Xiongxiong * 创建时间:2017-5-26 下午7:58:09 * 修改人:Mu Xiongxiong * 修改时间:2017-5-26 下午7:58:09 * 修改备注: * @version * */public class RemindJob implements Job {/**(非 Javadoc) * <p>Title: execute</p> * <p>Description(描述): 任务调度</p> * @param arg0 * @throws JobExecutionException * @see org.quartz.Job#execute(org.quartz.JobExecutionContext) */@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {IRemindService remindService = new RemindServiceImpl();System.out.println("任务:"+context.getJobDetail().getName());remindService.sendMsg(context.getJobDetail().getJobDataMap().getString("user"));}}
接下来看看spring里面是如何配置的:
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><!-- 1.创建任务实体类 2.创建触发器3.创建调度(注入数据)--><!-- <bean id="detailJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="org.service.impl.RemindJob"></property> <property name="jobDataMap"> <map> <entry key="user" value="王五"></entry> </map> </property></bean> --><bean id="remindService" class="org.service.impl.RemindServiceImpl"></bean><!-- 讲普通的javaBean定义为任务,而省略了任务类 --><bean id="detailJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="remindService"></property><property name="targetMethod" value="sendMsg"></property><property name="arguments"><list><value>赵六</value></list></property></bean><!-- 简单触发器 --> <bean id="trigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"><property name="repeatCount" value="-1"></property><property name="repeatInterval" value="3000"></property><property name="startDelay" value="1000"></property><property name="jobDetail" ref="detailJob"></property></bean> <!-- 复杂触发器 --><!-- <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="detailJob"></property><property name="cronExpression" value="0 39 22 26 * ?"></property></bean> --><bean id="sche" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="trigger"/></list></property></bean></beans>
代码都编写完毕,我们来测试一下:
package org.service.impl;import java.text.ParseException;import java.util.Date;import org.junit.Test;import org.quartz.CronTrigger;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.SimpleTrigger;import org.quartz.impl.StdSchedulerFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * * * 项目名称:spring_Schop07 * 类名称:RemindServiceImplTest * 类描述: 测试类* 创建人:Mu Xiongxiong * 创建时间:2017-5-26 下午8:04:00 * 修改人:Mu Xiongxiong * 修改时间:2017-5-26 下午8:04:00 * 修改备注: * @version * */public class RemindServiceImplTest {@Testpublic void testMethod() throws SchedulerException, InterruptedException, ParseException {//创建任务实体JobDetail jobDetail = new JobDetail("job1","group1",RemindJob.class);//给任务传递数据jobDetail.getJobDataMap().put("user","李四");//创建简单触发器SimpleTrigger trigger = new SimpleTrigger("trigger1",SimpleTrigger.REPEAT_INDEFINITELY,3000);//复杂触发器//每个月的26号 21:20:00//CronTrigger trigger = new CronTrigger("tigger3","group2","0 30 21 26 * ?");//开始时间(当前毫秒数+1秒,延迟一秒)trigger.setStartTime(new Date(System.currentTimeMillis()+1000));//创建调度器SchedulerFactory sfc = new StdSchedulerFactory();Scheduler sche = sfc.getScheduler();//注册任务和触发器sche.scheduleJob(jobDetail, trigger);//启动任务工程sche.start();//延迟10000msThread.sleep(100000);//关闭sche.shutdown();}/** * @throws InterruptedException * * @Title: testSpring* @Description: 该方法的主要作用通过spring实现quartz* @param 设定文件 * @return 返回类型:void * @throws */@Testpublic void testSpring() throws InterruptedException{ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");Thread.sleep(10000);}}
阅读全文
1 0
- java三大框架实现任务调度——IRemindService
- Quartz框架——实现定时任务调度
- java 实现任务调度
- Java任务调度框架Quartz入门教程指南(一) Quartz——一个强大的定时任务调度框架
- Java任务调度框架Quartz
- Java任务调度框架Quartz
- Java任务调度框架Quartz
- Linux任务调度(三)—anacron
- 【niubi-job——一个分布式的任务调度框架】----框架设计原理以及实现
- 【niubi-job——一个分布式的任务调度框架】----框架设计原理以及实现
- Java 三大框架——Struts
- Java 三大框架——Struts
- 任务调度框架Quartz(一) Quartz——一个强大的定时任务调度框架
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- java计划任务调度框架quartz结合spring实现调度的配置实例代码
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- JAVA实现定时调度任务
- [C++]头文件重复包含问题
- Android实现新闻浏览功能
- 日记
- libevent源码分析(7)--2.1.8--信号事件处理机制分析
- Android里面的Attr、Style和Theme 解析
- java三大框架实现任务调度——IRemindService
- 常用的正则表达式
- NEUOJ 1176 Problem: Easy to improve
- iptables服务
- 批量更换选中对象及子对象上的Text组件字体
- 简单方法实现仿超级课程表界面
- weblogic下部署cxf服务端Cannot create a secure XMLInputFactory
- Android表单乱码问题解决
- LeetCode 62 Unique Paths