日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java三大框架实现任务调度——IRemindService

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java三大框架实现任务调度——IRemindService 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???????? 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);}}

總結

以上是生活随笔為你收集整理的java三大框架实现任务调度——IRemindService的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。