====== 05 - Moments: eventos del paso del tiempo ====== **Moments** es una API de Spring Modulith que convierte el paso del tiempo en eventos de aplicación. Permite activar comportamientos asociados a intervalos temporales sin acoplarlos a una tarea periódica concreta. ===== 1. Eventos disponibles ===== Al incluir ''spring-modulith-moments'', se pueden consumir eventos como ''HourHasPassed'', ''DayHasPassed'', ''WeekHasPassed'', ''MonthHasPassed'', ''QuarterHasPassed'' y ''YearHasPassed''. @Component class MonthlyReportListener { @ApplicationModuleListener void on(MonthHasPassed event) { // Ejecutar trabajo asociado al cambio de mes. } } El bean ''Moments'' publica estos eventos usando un ''Clock'' basado en UTC por defecto. Se puede registrar un ''Clock'' propio en el contexto para controlar la fuente temporal. ===== 2. Simular el paso del tiempo ===== Al activar ''spring.modulith.moments.enable-time-machine'', la implementación expone ''TimeMachine''. Esta permite avanzar el reloj y provocar los eventos intermedios, útil para pruebas de integración de lógica dependiente del tiempo. ===== 3. Configuración ===== ^ Propiedad ^ Valor predeterminado ^ Función ^ | ''spring.modulith.moments.enable-time-machine'' | ''false'' | Habilita ''TimeMachine'' | | ''spring.modulith.moments.granularity'' | horas | Granularidad mínima; puede usarse días para omitir eventos horarios | | ''spring.modulith.moments.locale'' | Locale predeterminado | Determina los límites de semana | | ''spring.modulith.moments.quarter-start-month'' | enero | Mes inicial de los trimestres | | ''spring.modulith.moments.zone-id'' | UTC | Zona horaria de las fechas publicadas | ===== Referencia ===== * [Documentación oficial: Moments](https://docs.spring.io/spring-modulith/reference/moments.html) (Spring Modulith 2.1.1).