Saltar al contenido principal

Proveedor de Registro de Rutas 25.11

Abrir en ChatGPT

El RouteRegistryProvider es una Interfaz de Proveedor de Servicios (SPI) que permite a los marcos de integración proporcionar mecanismos de descubrimiento de rutas personalizados. Esto permite que los marcos integren su propio escaneo de classpath y sistemas de inyección de dependencias con la infraestructura de enrutamiento de webforJ.

Visión general

webforJ descubre rutas escaneando paquetes en busca de componentes anotados con @Route. El SPI RouteRegistryProvider permite que los marcos anulen este comportamiento predeterminado con su propio mecanismo de descubrimiento.

Utiliza este SPI cuando:

  • Integres con marcos de inyección de dependencias (Spring, CDI, ...)
  • Soportes entornos especializados (OSGi, cargadores de clases personalizados, GraalVM)
  • Construyas adaptadores de marcos que necesiten gestionar el ciclo de vida de los componentes de ruta
  • Reutilices escaneos de classpath existentes para optimizar el tiempo de inicio

Cómo funciona

Cuando se llama a RouteRegistry.ofPackage(), webforJ verifica proveedores registrados a través de ServiceLoader de Java. Si se encuentra un proveedor, el descubrimiento de rutas se delega a ese proveedor. De lo contrario, se utiliza el mecanismo de escaneo predeterminado.

Construyendo tu proveedor

Para crear un proveedor de descubrimiento de rutas personalizado, implementa la interfaz SPI y regístralo a través del mecanismo ServiceLoader de Java.

Implementar el SPI

Crea una clase que implemente RouteRegistryProvider:

public class CustomRouteRegistryProvider implements RouteRegistryProvider {

@Override
public void registerRoutes(String[] packages, RouteRegistry registry) {
// Escanear paquetes y registrar componentes @Route
}
}

Habilitar descubrimiento

Agrega el nombre de clase completamente calificado de tu proveedor a META-INF/services/com.webforj.router.RouteRegistryProvider:

src/main/resources/META-INF/services/com.webforj.router.RouteRegistryProvider
com.example.framework.CustomRouteRegistryProvider