Moments —— 时间流逝事件 API
spring-modulith-moments
是一个时间流逝事件的实现,其灵感大量来自 Matthias Verraes 的博客文章。这是一种基于事件的时间方法,用于触发与特定时间段已过去相关的操作。
要使用此抽象,请在您的项目中包含以下依赖项
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-moments</artifactId>
</dependency>
dependencies {
implementation 'org.springframework.modulith:spring-modulith-moments'
}
添加到项目类路径中的依赖项会在您的应用程序中产生以下影响:
-
应用程序代码可以引用 `HourHasPassed`、`DayHasPassed`、`WeekHasPassed`、`MonthHasPassed`、`QuarterHasPassed`、`YearHasPassed` 类型在 Spring 事件监听器中,以在经过一定时间后收到通知。
-
类型为 `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 |
如果设置为 `true`,则 `Moments` 实例将成为 `TimeMachine`,它公开了向前推移时间的 API。对于期望由时间流逝事件触发的功能的集成测试很有用。 |
|
hours |
要触发的事件的最小粒度。备选值为 `days`,以避免每小时的事件。 |
|
|
确定星期边界时要使用的 `Locale`。 |
|
|
季度开始的月份。 |
|
|
确定附加到发布的事件的时间的 `ZoneId`。 |