Если вы ожидаете, что вам понадобится выполнять вычисления несколько раз, вы можете создать задание. Например, если вы отображали списки учетных записей, срок действия которых истекает через неделю, и это была обычная транзакция. В этом случае вы можете посмотреть на Кварцевый планировщик .
Spring Framework имеет хорошую интеграцию с планировщиком Quartz. Вот пример конфигурации планирования, которая истекает каждый час объявлений с объявлением из проекта с открытым исходным кодом, над которым я работаю:
<!-- Scheduled Jobs -->
<bean id="expiryJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="postingDAO" />
<property name="targetMethod" value="expirePostings" />
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="expiryJob" />
<!-- run every hour -->
<property name="cronExpression" value="0 0 * * * ?" />
</bean>
<!--
<bean id="extraTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="expiryJob" />
<property name="cronExpression" value="0 * * * * ?" />
</bean>
-->
<!-- A list of Triggers to be scheduled and executed by Quartz -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
<!-- <ref bean="extraTrigger"/> -->
</list>
</property>
</bean>