<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[Spring任务调度器之Task的使用]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[编程杂谈]]></category>
<pubDate>Tue, 21 Mar 2017 06:06:14 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	最近发现真的凹凸了，Spring升级到3后原来已经自带任务调度器了，之前还一直使用着Quartz。<br/>其实也不是Quartz不好，只是相比之下，使用Spring task真的简单很多，无论是理解还是使用。<br/> <br/>Spring Task提供两种方式进行配置，正如大家所想吧，还是一种是annotation(标注)，而另外一种就是XML配置了。<br/>但其实这里我觉得比较尴尬，因为任务调度这样的需求，通常改动都是比较多的，如果用annotation的方式的话，改动就变得麻烦了，必须去重新编译。<br/>所以，我只是选择用XML配置的方式，不过我还是习惯性地启用着标注方式，就如AOP配置那样。<br/><br/>annotation方式请自行查找@Scheduled&nbsp;&nbsp;<br/> <br/>具体配置参考如下即可<br/><br/><textarea name="code" class="xml" rows="15" cols="100">
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
&nbsp;&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
&nbsp;&nbsp;xsi:schemaLocation="
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">

&nbsp;&nbsp;<bean id="gssOuterIndexService" class="com.juxin365.search.GssOuterIndexService"/>

&nbsp;&nbsp;&nbsp;&nbsp;<!-- 配置任务线性池 -->
&nbsp;&nbsp;&nbsp;&nbsp;<task:executor id="jxExecutor" pool-size="3" />
&nbsp;&nbsp;&nbsp;&nbsp;<task:scheduler id="jxScheduler" pool-size="3" />
&nbsp;&nbsp;&nbsp;&nbsp;<!-- 启用annotation方式，开启这个配置，spring才能识别@Scheduled注解&nbsp;&nbsp; -->
&nbsp;&nbsp;&nbsp;&nbsp;<task:annotation-driven scheduler="jxScheduler"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;executor="jxExecutor" proxy-target-class="true" />

&nbsp;&nbsp;&nbsp;&nbsp;<task:scheduled-tasks scheduler="jxScheduler">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<task:scheduled ref="gssOuterIndexService" method="addInformationToIndex"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cron="0 0 0/1 * * ?" /><!-- 每小时执行一次-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!-- 12点执行&nbsp;&nbsp;0 0 12 * * ? -->
&nbsp;&nbsp;&nbsp;&nbsp;</task:scheduled-tasks>
</beans>

</textarea><br/><br/>核心部分见<br/><textarea name="code" class="xml" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;<task:scheduled-tasks scheduler="jxScheduler">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<task:scheduled ref="gssOuterIndexService" method="addInformationToIndex"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cron="0 0 0/1 * * ?" /><!-- 每小时执行一次-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <!-- 12点执行&nbsp;&nbsp;0 0 12 * * ? -->
&nbsp;&nbsp;&nbsp;&nbsp;</task:scheduled-tasks>
</textarea><br/><br/>意思就是每小时执行gssOuterIndexService这个Bean中的addInformationToIndex方法。cron的配置表达式跟Quartz基本一致，但实测不支持一些特殊字符，如配置天的时候的L，W和Z，因为遇到要每个月倒数第三天执行任务调度的需求，但我一配置SpringTask报非法字符。<br/> <br/>所以，Quartz和SpringTask间的差距也显而易见的。SpringTask用起来十分简单，毕竟是Spring自家的，虽然跟Quartz也可以实现结合，但没那么简单。而SpringTask功能也没Quartz强大，Quartz的集群和高级特性多的去了。所以大家可以自行选择了。不过一般情况下，觉得SpringTask足够了。<br/><br/>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论] Spring任务调度器之Task的使用]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>