====== 07 - Soporte de ejecución de Spring Modulith ====== El soporte de ejecución permite utilizar el modelo de módulos mientras la aplicación está funcionando, además de usarlo en pruebas y generación de documentación. ===== 1. Verificación al iniciar ===== El artefacto ''spring-modulith-runtime'' registra componentes para acceder al modelo de módulos y permite verificar la estructura durante el arranque. Si ''spring.modulith.runtime.verification-enabled'' está activado, la aplicación puede detener el inicio si se detectan violaciones arquitectónicas. Las estrategias personalizadas de detección de módulos deben estar disponibles en las fuentes de producción cuando se necesiten para estas funcionalidades. ===== 2. Inicialización ordenada por dependencias ===== ''ApplicationModuleInitializer'' permite ejecutar inicialización propia de cada módulo. Spring Modulith ordena los inicializadores según las dependencias: primero se inicializan los módulos de los que otros dependen. @Component class InventoryInitializer implements ApplicationModuleInitializer { @Override public void initialize() { // Inicialización del módulo. } } ===== 3. Migraciones Flyway por módulo ===== Desde la versión 2.0, Spring Modulith puede organizar migraciones **Flyway** por módulo y ejecutarlas siguiendo el grafo de dependencias. La propiedad ''spring.modulith.runtime.flyway-enabled'' activa la configuración. Las migraciones globales se ubican en ''db/migration/__root'' y las específicas en ''db/migration/{identificador-del-módulo}''. Cada módulo mantiene su propio historial y numeración de versiones. En pruebas de módulo se ejecutan las migraciones globales y las de los módulos que participan en esa prueba. ''MigrationFilter'' permite personalizar qué migraciones se aplican. ===== Referencia ===== * [Documentación oficial: Spring Modulith Runtime Support](https://docs.spring.io/spring-modulith/reference/runtime.html) (Spring Modulith 2.1.1).