spring @Scheduled註解使用誤區,強烈建議同胞們看
阿新 • • 發佈:2019-01-06
在使用spring @Scheduled註解時很多人都為cron表示式無法進行配置進行煩惱吧,為何不像quartz般能在applicationContext中進行配置。
告訴大家其實是能applicationContext進行配置。
xml:
<context:annotation-config />
- <!--spring掃描註解的配置 -->
- <context:component-scanbase-package="com.baodian.bdweb.timer"/>
-
<!-- 開啟這個配置,spring才能識別@Scheduled註解 -->
- <task:annotation-drivenscheduler="qbScheduler"mode="proxy"/>
- <task:schedulerid="qbScheduler"pool-size="10"/>
java:
- @Component("Taskaa")
- publicclass Taskaa{
- @Scheduled(cron = "01 50 15 * * ?")
- publicvoid show(){
-
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"
- System.out.println("Taskaa:"+s.format(new Date()));
- }
- }<pre name="code"class="java">@Component("Taskbb")
- publicclass Taskbb{
- @Scheduled(cron = "01 49 15 * * ?")
- publicvoid show(){
- SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
System.out.println("Taskbb:"
- }
- }
上面這一種方式是大家最頭痛的問題吧,如果測試人員需要測試這個任務,你需要不停生成class檔案給測試人員替換,是不是非常鬱悶,其實我前期也被逼瘋了。我前期一直使用的Quartz,因此對該註解不是非常熟悉,趁著這個閒時想看看這個註解,結果一百度,卻找不到想要的結果。。換上我的谷歌繼續,功夫不負有心人,找到了一篇該註解的詳解,因此有了這一篇文章。廢話不多說,看原子彈來了!
xml:
- <context:annotation-config/>
- <!--spring掃描註解的配置 -->
- <context:component-scanbase-package="com.baodian.bdweb.timer"/>
- <beanid="Taskaa"class="com.baodian.bdweb.timer.Taskaa"/>
- <beanid="Taskbb"class="com.baodian.bdweb.timer.Taskbb"/>
- <task:scheduled-tasks>
- <task:scheduledref="Taskaa"method="show"cron="01 38 15 * * ?"/>
- <task:scheduledref="Taskbb"method="show"cron="01 39 15 * * ?"/>
- </task:scheduled-tasks>
java:
- @Component("Taskaa")
- publicclass Taskaa{
- @Scheduled
- publicvoid show(){
- SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println("Taskaa:"+s.format(new Date()));
- }
- }
- @Component("Taskbb")
- publicclass Taskbb{
- @Scheduled
- publicvoid show(){
- SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println("Taskbb:"+s.format(new Date()));
- }
- }