spring3中计划任务task

来源:互联网 发布:windows 10 bash 图像 编辑:程序博客网 时间:2024/05/01 18:25

1.spring配置文件上添加对task的描述


<beans xmlns="http://www.springframework.org/schema/beans"
    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.0.xsd">


2.spring配置文件中设置具体的任务

    cron表达式的介绍可以参考其他文档,跟Quartz的表达式是一样的,"0 * * * * ?"是指每分钟执行该任务,任务内容为taskJob中work方法

    <task:scheduled-tasks>
        <task:scheduled ref="taskJob" method="work" cron="0 * * * * ?"/>
    </task:scheduled-tasks>
3.对应的TaskJob类文件如下:


package com.company.web.servlet;

import org.springframework.stereotype.Service;

@Service
public class TaskJob {
   
    public void work() {
        System.out.println(123);
    }

}
由于这里使用了注解,需要在spring配置文件中设置扫描路径,如果未使用注解,把QuzrtzJob类加入spring配置文件即可

 

<context:component-scan base-package="com.company.web.servlet" />
task也可以使用注解的方式实现

 

 


@Component  //import org.springframework.stereotype.Component;
public class MyTestServiceImpl  implements IMyTestService {
      @Scheduled(cron="0/5 * *  * * ? ")   //每5秒执行一次
      @Override
      public void myTest(){
            System.out.println("进入测试");
      }
}


需要注意的几点:

1、spring的@Scheduled注解  需要写在实现上、

2、 定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true、具体就去百度google吧)

3、实现类上要有组件的注解@Component

 

0 0