javascript
spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划
spring 異常捕獲異常
看來我終于快要結束本系列有關使用Spring進行錯誤跟蹤的博客了,對于那些還沒有閱讀該系列博客的人,我正在編寫一個簡單但幾乎具有工業實力的Spring應用程序,掃描日志文件中的異常,然后生成報告。 在本系列的第一個博客中,這些是我的最初要求:
該博客介紹了滿足要求8的情況: “整個事情每天都會在給定的時間運行” ,這意味著實施某種調度。
現在,Java已經存在了很長時間,這意味著有許多調度任務的方法。 這些范圍包括:
- 使用一個簡單的線程并長時間sleep(...) 。
- 使用Timer和TimerTask對象。
- 使用ScheduledExecutorService 。
- 使用Spring的TaskExecutor和TaskScheduler類。
- 使用Spring的@EnableScheduling和@Scheduled注釋(從Spring 3.1開始)。
- 使用更專業的時間表。
調度程序的專業性更強,從Quartz (免費)到Obsidian (似乎更高級,但要花錢)。 如您所料,Spring包含了Quartz Scheduler支持。 實際上,有兩種方法可以將Quartz Scheduler集成到您的Spring應用程序中,它們是:
對于此應用程序,我將使用Spring的Quartz集成以及MethodInvokingJobDetailFactoryBean ; 原因是使用Quartz允許我使用cron表達式配置日程表,而MethodInvokingJobDetailFactoryBean可以快速,簡單地使用幾行XML進行配置。
Spring和Quartz使用的cron表示技術是從Unix的cron調度程序中毫不客氣地采用的 。 有關Quartz如何處理cron表達式的更多信息,請查看Quartz cron頁面 。 如果您在創建自己的cron表達式時需要幫助,那么您會發現Cron Maker是一個非常有用的實用程序。
設置Spring和Quartz時,要做的第一件事是將以下依賴項包含到POM項目文件中:
<!-- QuartzJobBean is in spring-context-support.jar --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${org.springframework-version}</version><exclusions><!-- Exclude Commons Logging in favour of SLF4j --><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><!-- Spring + Quartz need transactions --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${org.springframework-version}</version></dependency><!-- Quartz framework --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>1.8.6</version><!-- You can't use Quartz two with Spring 3 --></dependency>這很簡單,最后只有一個很小的“ Gotcha” 。 首先,Spring的Quartz支持位于spring-context-support-3.2.7.RELEASE.jar (如果適用,請替換您的Spring版本號)。 其次,您還需要包括Spring事務庫– spring-td-3.2.7.RELEASE.jar 。 最后,您需要包括一個Quartz調度程序版本; 但是,請小心,因為Spring 3.x和Quartz 2.x不能“開箱即用”地協同工作(盡管如果您四處看看,則可以找到臨時修復程序)。 我使用的是Quartz 1.8.6版,它確實可以滿足我的需要。
下一步要做的是整理XML配置,這涉及三個步驟:
配置了這三個bean之后,您將獲得一些類似于以下內容的XML:
<bean id="FileLocatorJob"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="errorTrackService" /><property name="targetMethod" value="trackErrors" /></bean><bean id="FileLocatorTrigger"class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="FileLocatorJob" /><!-- run every morning at 2 AM --><property name="cronExpression" value="${cron.expression}" /></bean><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="FileLocatorTrigger" /><!-- Add other triggers for other jobs (if any) here <ref bean="" /> --></list></property></bean>請注意,我在cron表達式中使用了占位符。 實際的cron表達式可以在app.properties文件中找到:
# run every morning at 2 AM cron.expression=0 0 2 * * ?# Use this to test the app (every minute) #cron.expression=0 0/1 * * * ?在這里,我有兩種表達方式:一種將工作安排在每天凌晨2點運行,另一種被注釋掉,每分鐘運行一次。 這是該應用程序不完全具有工業實力的一個實例。 如果有一個“合適的”應用程序,那么我可能會在每個環境(DEV,UAT和生產等)中使用一組不同的屬性。
釋放此應用程序僅需幾個步驟,而第一個步驟是創建可執行的JAR文件。 下次再說。
- 該博客的代碼可在Github上找到: https : //github.com/roghughe/captaindebug/tree/master/error-track 。 如果您想查看本系列中的其他博客,請在這里看……
翻譯自: https://www.javacodegeeks.com/2014/04/tracking-exceptions-part-5-scheduling-with-spring.html
spring 異常捕獲異常
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NoSql数据库:Cassandra,M
- 下一篇: 使用Spring Boot和Kubern