Class ReactiveAdapterRegistry


public class ReactiveAdapterRegistry extends Object
A registry of adapters to adapt Reactive Streams Publisher to/from various async/reactive types such as CompletableFuture, RxJava Flowable, and others.

By default, depending on classpath availability, adapters are registered for Reactor, RxJava 3, CompletableFuture, Flow.Publisher, and Kotlin Coroutines' Deferred and Flow.

Rossen Stoyanchev, Sebastien Deleuze, Juergen Hoeller
  • Constructor Details

    • ReactiveAdapterRegistry

      public ReactiveAdapterRegistry()
      Create a registry and auto-register default adapters.
      See Also:
  • Method Details

    • hasAdapters

      public boolean hasAdapters()
      Whether the registry has any adapters.
    • registerReactiveType

      public void registerReactiveType(ReactiveTypeDescriptor descriptor, Function<Object,Publisher<?>> toAdapter, Function<Publisher<?>,Object> fromAdapter)
      Register a reactive type along with functions to adapt to and from a Reactive Streams Publisher. The function arguments assume that their input is neither null nor Optional.
    • getAdapter

      @Nullable public ReactiveAdapter getAdapter(Class<?> reactiveType)
      Get the adapter for the given reactive type.
      the corresponding adapter, or null if none available
    • getAdapter

      @Nullable public ReactiveAdapter getAdapter(@Nullable Class<?> reactiveType, @Nullable Object source)
      Get the adapter for the given reactive type. Or if a "source" object is provided, its actual type is used instead.
      reactiveType - the reactive type (may be null if a concrete source object is given)
      source - an instance of the reactive type (i.e. to adapt from; may be null if the reactive type is specified)
      the corresponding adapter, or null if none available
    • getSharedInstance

      public static ReactiveAdapterRegistry getSharedInstance()
      Return a shared default ReactiveAdapterRegistry instance, lazily building it once needed.

      NOTE: We highly recommend passing a long-lived, pre-configured ReactiveAdapterRegistry instance for customization purposes. This accessor is only meant as a fallback for code paths that want to fall back on a default instance if one isn't provided.

      the shared ReactiveAdapterRegistry instance