springMVC quratz 定时任务重启时自动清理任务记录表

        公司最近改用springMVC+mybatis框架,对于quratz集群定时任务今天修改了定时任务的执行时间,重启完项目之后发现并没有任何改动。

        由于quratz 集群时,是将定时任务放到表里面的,在配置文件中重新修改定时任务的执行时间后发现表(qrtz_job_details)中的数据并没有变化,每次只能手动删除表数据后,重启项目才会改变。

       于是在网上查了一下,果然有配置的地方。

 

        <!-- 集群需持久化的Scheduler -->
	<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
		<property name="triggers">
			<list>
				<ref bean="demoJobTrigger"/>
			</list>
		</property>
		<property name="applicationContextSchedulerContextKey">
			<value>applicationContext</value>
		</property>
		<!-- Quartz 任务数据库持久化 -->
		<property name="dataSource"  ref="dynimicDataSource"/>
		<!--可选,QuartzScheduler启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 -->  
                <property name="overwriteExistingJobs" value="true" /> <!-- 加上这个就ok了-->
	</bean>

 

 

 

 

 

可以通过在Spring MVC配置文件中添加以下代码实现启动自动执行定时任务: ``` <!-- 定时任务配置 --> <task:scheduler id="scheduler" pool-size="10"/> <task:annotation-driven scheduler="scheduler"/> <!-- 定时任务bean --> <bean id="myTask" class="com.example.MyTask"/> <!-- 定时任务执行器 --> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="5"/> <property name="maxPoolSize" value="10"/> <property name="queueCapacity" value="25"/> </bean> <!-- 定时任务配置 --> <bean id="myTaskScheduler" class="org.springframework.scheduling.support.PeriodicTrigger"> <constructor-arg value="10000"/> </bean> <!-- 定时任务调度器 --> <bean id="myTaskSchedulerFactoryBean" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler"> <property name="poolSize" value="10"/> <property name="threadNamePrefix" value="myTaskScheduler-"/> <property name="awaitTerminationSeconds" value="60"/> <property name="waitForTasksToCompleteOnShutdown" value="true"/> <property name="scheduledExecutor" ref="taskExecutor"/> </bean> <!-- 定时任务注册 --> <bean id="myTaskRegistrar" class="org.springframework.scheduling.annotation.AnnotationAwareBeanPostProcessor"> <property name="scheduler" ref="myTaskSchedulerFactoryBean"/> </bean> ``` 在上述配置中,`myTask`为定时任务的实现类,`myTaskScheduler`为定时任务配置,`myTaskSchedulerFactoryBean`为定时任务调度器,`myTaskRegistrar`为定时任务注册。其中,`myTaskSchedulerFactoryBean`和`myTaskRegistrar`的`poolSize`属性可以根据实际需求进行调整。 在以上配置完成后,只需要在`myTask`中添加定时任务的方法,并在方法上添加`@Scheduled`注解即可实现自动执行定时任务。例如: ``` @Component public class MyTask { @Scheduled(fixedRate = 1000) public void doTask() { // 定时任务执行代码 } } ``` 在上述代码中,`@Scheduled(fixedRate = 1000)`表示每隔1秒执行一次定时任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值