首页 > 代码库 > quartz实例以及主要事项(注解)

quartz实例以及主要事项(注解)

实现任务类:

package com.vnetoo.nec.base.quartz;

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

/**
 * 定时发送信息
 *
 * @author lingpy
 * @since 1.0
 */
@Component
@Lazy(false)
public class SendMessageJob{
    private static long time = 0;
    
     @Scheduled(cron="0 0/2 *  * * ? ")  //两分钟一次
    public void work(){  
         time++;
        System.out.println("SendMessageJob : send message " + time + ",current :" + System.currentTimeMillis());  
    }  
}

 

 

spring.xml  配置

xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation="
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd

">

<task:annotation-driven/><!-- task任务扫描注解 -->

spring.xml可以添加注解扫描的配置

xmlns:context="http://www.springframework.org/schema/context

xsi:schemaLocation="

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd

">

<context:component-scan base-package="com.vnetoo.nec" />

 

主要事项:

在Spring配置和Quartz集成内容时,有两点需要注意

           1、在<Beans>中不能够设置default-lazy-init="true",否则定时任务不触发,如果不明确指明default-lazy-init的值,默认是false。可使用@Lazy(false)显示确定

           2、在<Beans>中不能够设置default-autowire="byName"的属性,否则后台会报 org.springframework.beans.factory.BeanCreationException错误,这样就不能通过Bean名称自 动注入,必须通过明确引用注入

 

quartz实例以及主要事项(注解)