[Spring] - Quartz定时任务 - Annotation

Spring + Quartz可以使用annoation方式:

1、AppJob类:

package com.my.quartz.testquartz1;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class AppJob {

    // @Scheduled(fixedDelay=1000)  //第一种方式
    // fixedDelay延时多少毫秒,多少毫秒执行一次
    /*
        1 Seconds (0-59)
        2 Minutes (0-59)
        3 Hours (0-23)
        4 Day of month (1-31)
        5 Month (1-12 or JAN-DEC)
        6 Day of week (1-7 or SUN-SAT)
        7 Year (1970-2099)
        取值:可以是单个值,如6;
            也可以是个范围,如9-12;
            也可以是个列表,如9,11,13
            也可以是任意取值,使用*
    */
    // 0 * * * * * 代表每分钟执行一次
    /*
         2011-09-07 09:23:00
        2011-09-07 09:24:00
        2011-09-07 09:25:00
        2011-09-07 09:26:00
     */
    @Scheduled(cron="0/1 * * * * ?")
    public void execute() {
        long ms = System.currentTimeMillis();
        System.out.println(ms);
    }

}

cron的写法,可参见:

http://www.cnblogs.com/HD/p/4205937.html

2、Spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <!--注解说明 -->
    <context:annotation-config />
    <!-- Spring自动扫描包 -->
    <context:component-scan base-package="com.my" />

    <!-- 计划任务 -->
    <task:executor id="executor" pool-size="5" />
    <task:scheduler id="scheduler" pool-size="10" />
    <task:annotation-driven executor="executor" scheduler="scheduler" />

</beans>

3、运行类:

package com.my.quartz.testquartz1;

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App
{
    @SuppressWarnings("resource")
    public static void main( String[] args ) throws InterruptedException, SchedulerException
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        System.out.println("Job-End");
        //Scheduler scheduler = (Scheduler) context.getBean("schedulerBean");
        //scheduler.shutdown();
    }
}

运行结果:



当然,Spring的配置文件也可以这样写:

    <!-- 定时器开关-->
    <task:annotation-driven />
    <!-- 管理的Bean -->
    <bean id="appJob" class="com.my.quartz.testquartz1" />
    <task:scheduled-tasks scheduler="task">
        <!--每三秒执行一次  -->
        <task:scheduled ref="appJob" method="execute"
            cron="0/1 * * * * ?" />
    </task:scheduled-tasks>
    <task:scheduler id="task" pool-size="10" />

这样写是可配置的,使用Annotation方式是编译式的。

时间: 2024-11-15 02:54:52

[Spring] - Quartz定时任务 - Annotation的相关文章

Java spring quartz 定时任务

首先,需要导入quartz 的jar包 ① applicationContext.xml <!-- 轮询任务 --> <import resource="classpath:/conf/quartz/ctmanage-schedule.xml" /> ② ctmanage-schedule.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q

Spring Quartz定时任务不准时执行

1. 前言 也是前段时间工作上遇到过这样的问题:quartz定时任务没有在预期的时间执行.后来研究了下quartz的机制,查明了原因,这里做个记录和分享. 2. 原因解释 先看一下spring quartz的大致机制或者说原理.quartz任务由一个主线程和线程池中的多个具体的工作线程构成. 主线程是QuartzSchedulerThread, 主要负责获取具体的定时任务和该任务执行的时间(比如可以通过cron expression 得到时间),并分发任务给线程池. 具体的任务由线程池中的工作线

spring quartz 定时任务“Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder”“Checking for available updated version of Quartz”

Failed to load class "org.slf4j.impl.StaticLoggerBinder 需要slf4j-api.jar.slf4j-log4j12.jar Checking for available updated version of Quartz 添加系统属性 System.setProperty("org.terracotta.quartz.skipUpdateCheck", "true"); spring quartz 定

Spring quartz定时任务service注入问题

今天想单元测试一下spring中的quartz定时任务,一顿折腾,到最后总是发现job类里注入的service为null.一开始还以为spring的配置问题,各种找原因,最后还是确定是没有注入. 就去网上搜搜吧.也找出来一些眉目.简单的理解这个原因是job是在quartz中实例化出来的,不受spring的管理.所以就导致注入不进去了.参考这个文章 http://www.tuicool.com/articles/Qjyamu 找着试试的态度,就按照文章里说的.new一个类 public class

spring quartz定时任务配置【基础篇】

一个定时执行的job package dk.spring.quartz; import java.util.Date; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; /** * 使用spring集成的quartz调度 */ public class QuartzTe

Spring+Quartz(定时任务)

1.通过maven导入需要jar <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

spring quartz定时任务

配置quartz 在spring中需要三个jar包: quartz-1.8.5.jar.commons-collections-3.2.1.jar.commons-logging-1.1.jar 首先要配置我们的spring.xml xmlns 多加下面的内容. [html] view plaincopy xmlns:task="http://www.springframework.org/schema/task" 然后xsi:schemaLocation多加下面的内容. [html]

一看便知spring+quartz定时任务

这是我经过网上收集然后加上自己的测试写的,以便大家使用 标配:已测 注意需要的包:(在已经配置spring 的情况下) quartz-all-1.6.jar        spring-context-support-4.0.0.jar applicationContext.xml配置文件 <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 当 IoC容器启动时,lazy-init="true"的bean,IoC容器启动时不会实例化该bean

spring + quartz定时任务,以及修改定时任务

spring4+quartz2.2.3,定时任务弄好了,修改定时任务没折腾起,没找到合适的解决方案. 最终使用库spring-context-support 3.2.17.RELEASE +  quartz 1.8.0解决,quart1.8.x版本的CronTriggerBean弄起来方便 关键代码如下: 1.maven文件 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qu