spring 定时器

先来看配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!-- Spring提供一个叫作JobDetailBean的类让JobDetail能对一些有意义的初始值进行初始化-->

 

  <bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean">

    <property name="jobClass">

      <value>test.timerTask.SayHelloTaskUsingQuartz</value>

    </property>

  </bean>

<!-- 关键在如下两个触发器的配置 -->

<!-- 类似于Java的简单触发器 -->

  <bean id="helloTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">

 

    <property name="jobDetail">

      <ref bean="sayHelloJob"/>

    </property>

    <property name="startDelay">

      <value>1000</value>

    </property>

    <property name="repeatInterval">

      <value>3000</value>

    </property>

  </bean>

<!-- 复杂触发器 -->

  <bean id="helloCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

 

    <property name="jobDetail">

      <ref bean="sayHelloJob"/>

    </property>

    <property name="cronExpression">

      <!-- 关键在配置此表达式 -->

      <value>0 49 15 * * ?</value>

    </property>

  </bean>

 

  <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

    <property name="triggers">

      <ref bean="helloCronTrigger"/>

    </property>

  </bean>

 

 

下面是具体的逻辑操作的类

 

public class SyncDate extends QuartzJobBean {

private static int code = 0;

 

@Override

protected void executeInternal(JobExecutionContext context)

throws JobExecutionException {

JobDataMap mergedJobDataMap = context.getMergedJobDataMap();

ApplicationContext application = (ApplicationContext) mergedJobDataMap

.get("applicationContext");//获取ApplicationContext 的引用。

SearchService searchSMXService = (SearchService) application.getBean("searchSMXService");

 

}

}

 

最早用的是获取bean的方式是用ClassPathXmlApplicationContext;

 

ApplicationContext ctx = new ClassPathXmlApplicationContext(

"/conf/spring/applicationContext*.xml");

SearchService searchSMXService = (SearchService) ctx.getBean("searchSMXService");

 

后来发现因为系统中不止一个地方进行初始化配置文件,所以定时器会执行多次(初始化几次就执行几次)

所以改为上面那种方式获取bean,不过这种要在spring配置文件里面注入一下applicationContextJobDataKey

即:

<bean id="smxJob" class="org.springframework.scheduling.quartz.JobDetailBean">

<property name="applicationContextJobDataKey" value="applicationContext"></property>

  <property name="jobClass">

     <value>cn.com.nuoter.playbar.newSMX.util.SyncDate</value>

        </property>

   </bean>

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值