代码拉取完成,页面将自动刷新
同步操作将从 xautlx/s2jh4net 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Spring 3已经提供比较便捷的定时任务功能支持,如定时间隔及CRON语法支持, 但是对于企业应用应该还是离不开Quartz的所提供的Cluster支持特性。
按照Spring的主体风格,同样提供了基于Annotation注解的方式定义定时任务,但是建议不要直接把定时配置参数写死在注解中很简单道理降低了系统可维护性, 即便还是想用Annotation方式最好以动态参数方式从属性文件或数据库加载配置,以便可以随时灵活的调整定时参数。
对于定时任务这部分,在框架中除了按照常规的Spring Asynchronous & Scheduling用法外,主要从以下层面进行封装扩展:
在prototype工程中,演示了如下几种定时任务用法,基本涵盖了企业应用比较典型的定时业务场景.
参考配置文件 prototype\src\main\resources\service\spring-schedule.xml
<task:scheduled-tasks scheduler="springScheduler">
<!-- 固定间隔触发任务,单位毫秒 -->
<task:scheduled ref="systemSechduleService" method="pubPostCacheRefreshTimely"
fixed-rate="300000" />
</task:scheduled-tasks>
<!-- 基于Spring与Quartz整合以RAM内存存储非cluster集群的任务列表,适合定义在每台服务器节点都执行的任务 -->
<bean id="quartzRAMScheduler" class="com.entdiy.schedule.ExtSchedulerFactoryBean" depends-on="quartzDatabaseDataInitialize">
<property name="schedulerName" value="quartzRAMScheduler" />
<!-- quartz配置 -->
<property name="configLocation" value="classpath:quartz-ram.properties" />
<!-- 启动时延期N秒开始任务 -->
<property name="startupDelay" value="30" />
<!-- Job接受applicationContext的成员变量名 -->
<property name="applicationContextSchedulerContextKey" value="applicationContext" />
<!-- 静态Triggers配置,这些配置Trigger以固定模式运行,如果需要更新则修改配置后更新应用部署才能生效 -->
<property name="triggers">
<list>
<!-- 统计数据库状态信息的定时任务,演示在集群环境中只需要任何一个节点统计执行即可 -->
<bean id="com.entdiy.schedule.job.ServerMonitorJob.Trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean name="com.entdiy.schedule.job.ServerMonitorJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.entdiy.schedule.job.ServerMonitorJob" />
<property name="durability" value="true" />
</bean>
</property>
<property name="cronExpression" value="0 0 7-23 * * ?" />
</bean>
</list>
</property>
<!-- 定时任务配置Service对象注入,自动获取数据库定时任务配置然后动态加载到Quartz Scheduler,并提供管理界面可动态实时更新以及立即执行等操作 -->
<property name="jobBeanCfgService" ref="jobBeanCfgService" />
</bean>
<!-- 基于Spring与Quartz整合并且支持cluster集群的任务列表,适合定义需要在多个服务器节点中确保同一时间只有一个任务实例执行的任务 -->
<bean id="quartzClusterScheduler" class="com.entdiy.schedule.ExtSchedulerFactoryBean" depends-on="quartzDatabaseDataInitialize">
<property name="schedulerName" value="quartzClusterScheduler" />
<!-- quartz配置 -->
<property name="configLocation" value="classpath:quartz-cluster.properties" />
<!-- 启动时延期N秒开始任务 -->
<property name="startupDelay" value="30" />
<!-- 保存Job数据到数据库所需的数据源 -->
<property name="dataSource" ref="dataSourceQuartz" />
<property name="transactionManager" ref="transactionManagerQuartz" />
<!-- Job接受applicationContext的成员变量名 -->
<property name="applicationContextSchedulerContextKey" value="applicationContext" />
<!-- 用数据库最新配置覆盖已有配置 -->
<property name="overwriteExistingJobs" value="true" />
<!-- 静态Triggers配置,这些配置Trigger以固定模式运行,如果需要更新则修改配置后更新应用部署才能生效 -->
<property name="triggers">
<list>
<!-- 统计数据库状态信息的定时任务,演示在集群环境中只需要任何一个节点统计执行即可 -->
<bean id="com.entdiy.schedule.job.DatabaseMonitorJob.Trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean name="com.entdiy.schedule.job.DatabaseMonitorJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.entdiy.schedule.job.DatabaseMonitorJob" />
<property name="durability" value="true" />
</bean>
</property>
<property name="cronExpression" value="0 0 0 * * ?" />
</bean>
</list>
</property>
<!-- 定时任务配置Service对象注入,自动获取数据库定时任务配置然后动态加载到Quartz Scheduler,并提供管理界面可动态实时更新以及立即执行等操作 -->
<property name="jobBeanCfgService" ref="jobBeanCfgService" />
</bean>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。