2015年11月22日 Spring3.0 浏览(167) 收藏

云码网使用Spring框架实现的定时器策略

在Web项目中,我们常常会用到定时器来处理相关任务。例如云码网周期性的对文章进行索引,便于在搜索中能搜到最新分享的文章等。


云码网的定时器是基于Spring框架实现的,Spring配置代码如下:

<bean id="codingTask" class="com.everycoding.admin.timetask.CodingTask"></bean>
<!-- 配置job -->
<bean id="codingIndexJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="codingTask"/>
    <property name="targetMethod" value="codingIndex"/>
    <property name="concurrent" value="false" />
</bean>

<!-- 配置job 触发器,即job的执行频率 -->
<bean id="codingIndexCronTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean" >
    <property name="jobDetail" ref="codingIndexJobDetail"/>
    <property name="cronExpression" value="0 0/5 * * * ?" />
    <property name="description" value="lucene写入索引定时器" />
</bean>

<!-- 配置定时器执行的线程策略 -->
<bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="10" />
    <property name="maxPoolSize" value="100" />
    <property name="queueCapacity" value="500" />
</bean>

<!-- 将job触发器注册到计划中 -->
<bean id="schedulerFactoryBean"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="codingIndexCronTrigger" />
        </list>
    </property>
    <property name="autoStartup">
        <value>true</value>
    </property>
    <property name="taskExecutor" ref="executor" />
</bean>


xml 配置中的CodingTask代码如下:


import org.springframework.beans.factory.annotation.Autowired;
import com.everycoding.search.CodingSearch;

/**
 * 
 * @Website: www.everycoding.com
 * @Description: 索引定时器
 * @date 2015年8月16日 下午10:27:59
 */
public class CodingTask {
    @Autowired
    private CodingSearch codingSearch;
    public void codingIndex() {
        // 调用搜索服务,执行内部索引算法
        codingSearch.index();
    }

}


至此,核心定时器部分已分享完毕。对于初学Spring者,可以借鉴。

赞一下 0 人赞了本文