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).