Moments — 時間の経過イベント API
spring-modulith-moments
は、Matthias Verraes のブログ投稿 (英語) に大きく影響を受けた Passage of Time Events の実装です。これは、経過した特定の期間に関連付けられたアクションをトリガーする、時間に対するイベントベースのアプローチです。
抽象化を使用するには、プロジェクトに次の依存関係を含めます。
プロジェクトのクラスパスに依存関係が追加されると、アプリケーションで次のような問題が発生します。
アプリケーションコードは、Spring イベントリスナーの
HourHasPassed
、DayHasPassed
、WeekHasPassed
、MonthHasPassed
、QuarterHasPassed
、YearHasPassed
型を参照して、一定の時間が経過した場合に通知を受け取ることができます。org.springframework.modulith.Moments
型の Bean は、これらのイベントをトリガーするロジックを含むApplicationContext
で使用できます。spring.modulith.moments.enable-time-machine
がtrue
に設定されている場合、そのインスタンスはorg.springframework.modulith.TimeMachine
となり、時間を「シフト」することができ、それによってすべての中間イベントをトリガーできます。これは、イベントによってトリガーされる統合テスト機能に役立ちます。
デフォルトでは、Moments は Clock.systemUTC()
インスタンスを使用します。これをカスタマイズするには、Clock
型の Bean を宣言します。
Java
Kotlin
@Configuration
class MyConfiguration {
@Bean
Clock myCustomClock() {
// Create a custom Clock here
}
}
@Configuration
class MyConfiguration {
@Bean
fun myCustomClock(): Clock {
// Create a custom Clock here
}
}
Moments は、高度なカスタマイズのために次のアプリケーションプロパティを公開します。
プロパティ | デフォルト値 | 説明 |
---|---|---|
| false |
|
| 時間 | 発生するイベントの最小粒度。毎時イベントを回避するための代替値 |
|
| 週の境界を決定するときに使用する |
|
| 四半期が始まる月。 |
|
|
|