Tabla de Contenidos

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