spring 中配置定时调度两种方法介绍

标签: spring 调度 方法 | 发表时间:2014-11-03 23:44 | 作者:walt18
出处:http://blog.csdn.net

方法一:

直接用jdk api的Timer类,无需配置spring文件

1、用@compent注解,实现InitializingBean接口 ,spirng会自动去查找afterPropertiesSet()方法,

2、在afterPropertiesSet方法中写业务实现,调用timer的schedule方法或者 scheduleAtFixedRate方法

          schedule( TimerTask task, Date time)
          安排在指定的时间执行指定的任务。

          scheduleAtFixedRate( TimerTask task, Date firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的 固定速率执行

代码实现如下:

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;

import java.util.TimerTask;
import javax.annotation.Resource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import com.cssweb.payment.account.service.support.AccountServiceSupport;

@Component
public class GetTimer implements InitializingBean{
 
 private Date date;
 
 @Override
 public void afterPropertiesSet() throws Exception {
  init();//初始化参数,每天凌晨00:00:00开始作业
  //System.out.println("时间是:============="+date);
  new Timer().schedule(test(), date);  //test()为自己要处理的业务实现方法
 }
 
 /** 
 * 初始化参数 
 *
 */
  public void init(){ 
     Calendar cal = Calendar.getInstance();
     cal.set(Calendar.HOUR_OF_DAY, 0);
     cal.set(Calendar.SECOND, 0);
     cal.set(Calendar.MINUTE, 0);
     cal.add(Calendar.DAY_OF_MONTH, 1);
     date = cal.getTime();
 }


 public static TimerTask test(){
  return new TimerTask() {
   @Override
   public void run() {
    System.out.println(new Date()+"开始了------------------------------");
   }
  };
 }


}

 

方法二:用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:jee=" http://www.springframework.org/schema/jee"
       xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
   
 <bean id="remindSchedule" class="com.checking_in_remind.controller.Remind" />   //找到对应的类名
 
 <!-- 定义调用对象和调用对象的方法(jobDetail) -->
  <bean id="remindtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <!-- 注册定时任务执行时调用的类 -->
  <property name="targetObject" ref="remindSchedule" />
  <!-- 注册定时任务执行时调用的方法 -->
   <property name="targetMethod" value="getPersonInfo" />
  <!-- 此参数为false等于JobDetail对象实现了Stateful接口,jobs不会并发运行-->
   <property name="concurrent" value="false" />
 </bean>
 
 <bean id="remindCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="remindtask" />
  <!-- 每5分钟执行一次任务调度 -->
  <property name="cronExpression" value="0 */5 * * * ?"/>
 </bean>
</beans>

 

作者:walt18 发表于2014-11-3 15:44:16 原文链接
阅读:71 评论:0 查看评论

相关 [spring 调度 方法] 推荐:

spring 中配置定时调度两种方法介绍

- - CSDN博客综合推荐文章
直接用jdk api的Timer类,无需配置spring文件. 1、用@compent注解,实现InitializingBean接口 ,spirng会自动去查找afterPropertiesSet()方法,. 2、在afterPropertiesSet方法中写业务实现,调用timer的schedule方法或者.

基于spring-boot的kettle调度 - 简书

- -
大家好,我是帅气小伙,由于最近公司项目辗转大数据,需要做数据抽取的工作,kettle是目前比较成熟的ETL工具,而传统的kettle客户端在任务调度这方面没有实现,于是在网上寻找开源的kettle调度项目. 专门为kettle这款优秀的ETL工具开发的web端管理工具. 貌似源码跑起来比较费劲,各种缺包,于是我为大家专门整理了一下这个项目.

spring与mybatis四种整合方法

- - 企业架构 - ITeye博客
  1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.   (1)Spring配置文件:.      .       .       .

Spring MVC HTTP Status 406 - 解决方法

- - 行业应用 - ITeye博客
字面意思很明显,产生的格式跟能接受的格式不符,对不上眼. 但是各种google、stackoverflow之后,大多数答案都只是说要加上json的相关依赖之类的,试了都无用. 而另一个HeaderContentNegotiationStrategy根本没发挥作用.   在spring-servelt中添加.

Spring事务回滚的两种方法

- - 掘金 后端
这是我参与「掘金日新计划 · 10 月更文挑战」的第30天, 点击查看活动详情. 当然,Spring事务回滚的前提是你当前使用的数据库必须支持事务,比如MySQL的Innodb是支持的,但Mysaim则是不支持事务的. @Transaction 来配置自动回滚,可以配置在类上,也可以配置在方法上(作用域不同),但对final或private修饰的方法无效,且该类必须是受spring所管控的,也就是被已经被注入的类,而不是new出来的类.

Spring实现后台的任务调度TimerTask和Quartz

- - CSDN博客互联网推荐文章
最近整后台,涉及到两个后台调度的问题. 一是以时间间隔为条件的轮询调度;. 运用场景:每隔5分钟抓取数据;. 二是一某个时间点为条件的轮询调度;. 运用场景:后台日志货报表生成上传,每个周一生成上一周的,每个月初生成上一月. 其实按周来执行调度,用前面一个场景也可以实现,但是按月生成,因为每月时间不固定,必须动态判断和执行.

Spring 任务调度Quartz的cron表达式

- - ITeye博客
Spring支持基于Quartz的任务调度,那么其cron表达式类似于Linux的crontab,有7个字符构成,详情如下:. 表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五. 表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即等同于10,11,12.

【spring】springmvc接收请求参数的方法

- - 开源软件 - ITeye博客
     控制器的请求处理方法的签名可以将任何事物作为参数,我们可以将HttpServletRequest、HttpServletResponse、 String或者数字参数传递进来,这些参数可以对应请求中的查询参数、cookie值、HTTP请求头的值或其他一些可能的选项. 使用@RequestParam绑定请求参数值.

Spring配置文件location的几种设置方法

- - ITeye博客
1.默认location 默认会去加载WEB-INF下的applicationContext.xml文件,如果该文件不存在,则会抛出以下的异常. web.xml中通过servlet name自定义. 通过以下的定义,会去加载WEB-INF下面的test-servlet.xml作为spring的配置文件.

基于 Annotation 拦截的 Spring AOP 权限验证方法

- - 企业架构 - ITeye博客
转自: http://www.ibm.com/developerworks/cn/java/j-lo-springaopfilter/index.html. 使用 Annotation 可以非常方便的根据用户的不同角色,分配访问 Java 方法的权限. 在 Java Web 开发中,使用这种方法,可以提高系统的松耦合度,方便维护.