10.4.5 判断拍卖物品状态
10.4.5 判断拍卖物品状态
当拍卖物品进入系统后,随着时间的流逝,拍卖物品超过了有效时间,拍卖结束,此时拍卖物品可能有两种状态:
- 一种是被人成功赢取,
- 另一种是流拍。
不管是哪一种状态,这种拍卖物品状态的改变都应该由系统自动完成:系统每隔一段时间,判断系统中正在拍卖的物品是否到了拍卖期限,并修改其拍卖状态。
为了修改拍卖物品的状态,业务逻辑组件提供了一个updateWiner
方法,该方法将当前时间与物品的拍卖最后期限比较,如果最后期限不晚于当前时间,则修改该物品的状态为流拍或拍卖成功。如果拍卖成功,还需要修改该物品的赢取者。该方法的代码如下。
1 | /** |
该方法并不由客户端直接调用,而是由任务调度来执行。**Spring
的任务调度机制将负责每隔一段时间自动调用该方法一次**,以判断拍卖物品的状态。
系统的任务调度将让updateWiner()
方法每隔一段时间执行一次,这种任务调度也可借助于Spring
的任务调度机制来完成。Spring
的任务调度可简单地通过task:
命令空间下的如下三个元素进行配置。
task:scheduler
:该元素用于配置一个执行任务调度的线程池。task:scheduled-tasks
:该元素用于开启任务调度,该元素需要通过scheduler
属性指定使用哪个线程池。task:scheduled
:该元素用于指定调度属性,比如延迟多久开始调度,每隔多长时间调度一次等。
通过这三个元素即可在Spring
中配置任务调度。下面是配置该任务调度的配置片段。
1 | <!-- 定义执行任务调度的线程池 --> |
通过如此配置,可以保证Spring
容器启动后,即建立任务调度,该任务调度每隔一段时间调用AuctionService
的updateWiner()
方法一次。
提示:如果读者需要了解更多关于Spring
任务调度的知识,可以参考Spring
项目的参考手册。