Quartz 任务调度实例 定时的在SSM框架中的运用

    xiaoxiao2021-03-25  219

    Quartz 时间任务调度器

    上官网:http://www.quartz-scheduler.org/ 下载最新的java包 还有一个问题就是,Spring3.1以下的版本才能用quartz1.X的版本, Spring3.1以上的版本才能用quartz2.X的版本,这是由于其中内部冲突问题,没有去详细的了解。

    maven的加载jar包方式,现在都是比较用的多maven来管理jar包的

    <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> //创建一个main函数来执行程序,执行的是QuartzTaskFactory.class这个类,定义的是每隔5秒执行一次这个函数 public class QuartzDemo { public static void main(String[] args) { try { //初始化一个Schedule工厂 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); //通过schedule工厂类获得一个Scheduler类 Scheduler scheduler = schedulerFactory.getScheduler(); //通过设置job name, job group, and executable job class初始化一个JobDetail JobDetail jobDetail = JobBuilder.newJob(QuartzTaskFactory.class).build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simple") .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?")) //每隔5秒执行一次 .startNow() .build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } } }

    创建一个类,实现Job接口

    public class QuartzTaskFactory implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub try { System.out.println("任务运行..."); // ApplicationContext ctx = new ClassPathXmlApplicationContext("quartz-task.xml"); JobDataMap jobDataMap = arg0.getJobDetail().getJobDataMap(); Integer count = (Integer) jobDataMap.get("count"); if(count==null){ count=0; } count++; System.out.println("11fsdfsds"+count); //在这里执行你的任务... } catch (Exception e) { e.printStackTrace(); } } }

    Markdown及扩展

    上面只是一个简单的实例,也可以在spring xml文件中配置 在spring配置,当程序在运行的时候,会每隔自己定义的时间执行一次,

    <bean id="testJob" class="com.QuartzTaskFactory" /> <bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 指定任务类 --> <property name="targetObject" ref="testJob" /> <!--指定任务执行的方法--> <property name="targetMethod" value="execute" /> <!-- 下面为也可以不实现Job接口,具体详细自己实现 --> <property name="targetObject"> <ref bean="testJob"/> </property> <property name="targetMethod"> <value>execute</value> </property> </bean> <bean id="testJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="testJobDetail" /> 每隔20秒执行一次 <property name="cronExpression" value="0/20 * * * * ?" /> <!-- 每隔4分钟执行一次 --> <!--<property name="cronExpression" value="0 */4 * * * ?" />--> </bean> <bean id="sfb" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testJobTrigger" /> </list> </property> </bean>

    后面我将实现自己定义时间,根据自己定义时间来执行程序

    转载请注明原文地址: https://ju.6miu.com/read-629.html

    最新回复(0)