sping MVC 定时任务的设置

  项目中用到了定时任务,写一篇随笔记录一下。

  首先在Spring的配置文件ApplicationContext.xml文件的beans标签中添加

xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task 
http://www.springframework.org/schema/task/spring-task-4.1.xsd

  目前我了解的有两种方式使用定时任务:

  1.在配置文件中声明定时任务的调用

  先在ApplicationContext.xml文件中声明调用的bean

<bean id="quartzController" class="com.bizdata.common.socket.web.resource.QuartzTaskController">bean>

  调用的java方法及代码如下

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.stereotype.Controller;

@Controller
public class QuartzTaskController {
    
    public void sysTime(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf.format(new Date()));
    }

}

  然后声明调用对象和调用对象的方法


    <bean id="myJobDetailA"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="quartzController">  
        property>
        <property name="targetMethod" value="sysTime">property>   
        <property name="concurrent" value="false" />
        
    bean>
    
    <bean id="myTriggersA"
          class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="myJobDetailA">
        property>
        <property name="cronExpression">
            <value>0 00 6 * * ?value>    
            
        property>
    bean>

  以上即完成定时任务的设置,每天早上6点调用。

  2.通过注解调用(推荐方法,会省很多配置,方便使用)

  ApplicationContext.xml文件中声明bean自动扫描:


    <context:annotation-config />
    <context:component-scan base-package="com.bizdata" />

  同时添加注解调用的配置

 

  java代码

  @Scheduled(cron="0 0 22 * * ?")
    public boolean getDataCenterData(){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -1);
        return getDataCenterData(calendar.getTime());
    }

  完成定时任务使用,每天22点调用。

  使用以上配置的注解方式调用定时任务时会打印出异常日志,但不影响使用,可以在log4j.properties文件添加一下日志等级过滤即可。

#定时器日志级别
log4j.logger.org.springframework.scheduling = INFO

 

  

你可能感兴趣的:(sping MVC 定时任务的设置)