Zum Hauptinhalt springen

Anbieter für Routenregistrierung 25.11

In ChatGPT öffnen

Der RouteRegistryProvider ist eine Service Provider Interface (SPI), die es Integrationsframeworks ermöglicht, benutzerdefinierte Mechanismen zur Routenentdeckung bereitzustellen. Dies ermögliche es Frameworks, ihre eigenen Klassenpfad-Scans und Dependency Injection-Systeme mit der Routing-Infrastruktur von webforJ zu integrieren.

Übersicht

webforJ entdeckt Routen, indem Pakete nach mit @Route annotierten Komponenten durchsucht werden. Das RouteRegistryProvider SPI ermöglicht es Frameworks, dieses Standardverhalten mit ihrem eigenen Entdeckungsmechanismus zu überschreiben.

Verwenden Sie dieses SPI, wenn:

  • Sie mit Dependency Injection-Frameworks wie Spring oder Contexts and Dependency Injection (CDI) integrieren
  • Spezialisierte Umgebungen unterstützen (OSGi, benutzerdefinierte Classloader, GraalVM)
  • Framework-Adapter erstellen, die den Lebenszyklus von Routenkomponenten verwalten müssen
  • Vorhandene Klassenpfadscans wiederverwenden, um die Startzeit zu optimieren

Funktionsweise

Wenn RouteRegistry.ofPackage() aufgerufen wird, überprüft webforJ registrierte Anbieter über Java's ServiceLoader. Wenn ein Anbieter gefunden wird, wird die Routenentdeckung an diesen Anbieter delegiert. Andernfalls wird der Standard-Scan-Mechanismus verwendet.

Ihren Anbieter erstellen

Um einen benutzerdefinierten Anbieter für die Routenentdeckung zu erstellen, implementieren Sie das SPI-Interface und registrieren Sie es über den ServiceLoader-Mechanismus von Java.

Implementieren Sie das SPI

Erstellen Sie eine Klasse, die RouteRegistryProvider implementiert:

public class CustomRouteRegistryProvider implements RouteRegistryProvider {

@Override
public void registerRoutes(String[] packages, RouteRegistry registry) {
// Pakete scannen und @Route-Komponenten registrieren
}
}

Entdeckung aktivieren

Fügen Sie den vollständig qualifizierten Klassennamen Ihres Anbieters zu META-INF/services/com.webforj.router.RouteRegistryProvider hinzu:

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