====== 02 - Verificación de la estructura modular ====== **Spring Modulith** permite comprobar que la organización del código respeta los límites y dependencias previstos entre módulos. ===== 1. Reglas verificadas ===== La verificación detecta principalmente: * **Ciclos entre módulos:** el grafo de dependencias debe ser acíclico. * **Acceso a paquetes internos:** un módulo no debe referirse a tipos internos de otro; debe depender de sus paquetes API. * **Dependencias no declaradas:** si se configura ''allowedDependencies'', solo se permiten las dependencias enumeradas. Se puede ejecutar durante una prueba: @Test void moduleStructureIsValid() { ApplicationModules.of(Application.class).verify(); } Si se detecta una infracción, ''verify()'' lanza una excepción. Para inspeccionar o filtrar las infracciones antes de fallar, se puede usar ''detectViolations()'': ApplicationModules.of(Application.class) .detectViolations() .filter(violation -> /* criterio */ true) .throwIfPresent(); ===== 2. Personalizar las reglas ===== ''verify()'' y ''detectViolations()'' aceptan ''VerificationOptions'' para incorporar reglas adicionales o ajustar las comprobaciones automáticas. Spring Modulith también puede integrar reglas de **jMolecules ArchUnit** cuando la biblioteca está presente. La idea es automatizar las restricciones arquitectónicas en pruebas para detectar dependencias indebidas al modificar el código. ===== Referencia ===== * [Documentación oficial: Verifying Application Module Structure](https://docs.spring.io/spring-modulith/reference/verification.html) (Spring Modulith 2.1.1).