我们有一个使用 Spring Framework 在 Tomcat 中运行的 Web 应用程序。我们需要为经常性操作添加一些计划作业。为此,我们遇到了 Quartz Scheduler,并按照教程使用 Quartz 和 Spring 配置作业,并按预期安排和运行作业。
所以我们在应用程序启动时安排了一些任务。现在我们希望用户手动运行作业并更改作业的触发器,但我们需要将这些更改持久化到数据库中。因此,当应用程序启动时,它会读取持久化的任务,如果它们不存在,则从 spring 描述符文件中加载默认任务。
为简单起见,假设我们使用的是示例中的 beans.xml 文件:
<bean id="processToExecute" class="com.mycompany.ProcessToExecute" />
<bean name="processToExecuteJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.mycompany.ProcessToExecuteJob" />
<property name="jobDataAsMap">
<map>
<entry key="processToExecute" value-ref="processToExecute" />
</map>
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="processToExecuteJob" />
<property name="cronExpression" value="0/5 * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="processToExecuteJob" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
因此,我们希望继续对默认任务使用类似 bean 的配置,但如果已经安排好了从数据库加载它们的选项。
这里的 Quartz 不是必需的,如果有人知道使用 Spring 实现它的更简单方法,@Scheduled
它也可能很有用。
谢谢你的时间。