在理解项目中的某些代码时,我遇到了一些问题,他们使用两种方法来实现有状态作业。
1. 第一种方式:-在这里,我们将Concurrent设置为false。表示作业不会同时执行。
<bean id="migrateDocsToFTP" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="migrateDocsToFTPTask" />
<property name="targetMethod" value="migrateDocs" />
<property name="concurrent" value="false" />
</bean>
2. 第二种方法:-通过使用jobClass
属性并扩展QuartzJobBean
并在类定义中实现StatefulJob
。
<bean name="migrateJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.xyz.abcService.scheduler.migrateDocsToFTPTask"/>
</bean>
第二种方式,我们使用了Stateful
,它也像this answer中提到的concurrent:false
一样工作。两者之间可以有一些细微的区别吗??