SpringFrameworkを使用してTomcatで実行されているWebアプリケーションがあります。定期的な操作のためにいくつかのスケジュールされたジョブを追加する必要があります。このためにQuartzSchedulerに出くわし、SpringでQuartzを使用してジョブを構成するためのチュートリアルに従い、ジョブをスケジュールして期待どおりに実行しました。
そのため、アプリケーションの起動時にスケジュールされるタスクがいくつかあります。ここで、ユーザーが手動でジョブを実行し、ジョブのトリガーを変更する必要がありますが、これらの変更はデータベースに保持される必要があります。そのため、アプリケーションが起動すると、永続化されたタスクが読み取られ、存在しない場合は、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のような構成を使用しますが、すでにスケジュールされている場合はデータベースからそれらをロードするオプションを使用します。
ここでのクォーツは必須ではありません。Springを使用してクォーツを実現する簡単な方法を誰かが知っている場合は、@Scheduled
それも役立つ可能性があります。
御時間ありがとうございます。