Package org.springframework.core
Class ReactiveAdapterRegistry
- java.lang.Object
- org.springframework.core.ReactiveAdapterRegistry
public class ReactiveAdapterRegistry extends Object
A registry of adapters to adapt Reactive StreamsPublisherto/from various async/reactive types such asCompletableFuture, RxJavaObservable, and others.By default, depending on classpath availability, adapters are registered for Reactor, RxJava 1, RxJava 2 types,
CompletableFuture, Java 9+Flow.Publisherand Kotlin CoroutinesDeferredandFlow.- Since:
- 5.0
- Author:
- Rossen Stoyanchev, Sebastien Deleuze
Nested Class Summary
Nested Classes Modifier and Type Class Description static classReactiveAdapterRegistry.SpringCoreBlockHoundIntegrationBlockHoundIntegrationfor spring-core classes.
Constructor Summary
Constructors Constructor Description ReactiveAdapterRegistry()Create a registry and auto-register default adapters.
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ReactiveAdaptergetAdapter(Class<?> reactiveType)Get the adapter for the given reactive type.ReactiveAdaptergetAdapter(Class<?> reactiveType, Object source)Get the adapter for the given reactive type.static ReactiveAdapterRegistrygetSharedInstance()Return a shared defaultReactiveAdapterRegistryinstance, lazily building it once needed.booleanhasAdapters()Whether the registry has any adapters which would be the case if any of Reactor, RxJava 2, or RxJava 1 (+ RxJava Reactive Streams bridge) are present on the classpath.voidregisterReactiveType(ReactiveTypeDescriptor descriptor, Function<Object,org.reactivestreams.Publisher<?>> toAdapter, Function<org.reactivestreams.Publisher<?>,Object> fromAdapter)Register a reactive type along with functions to adapt to and from a Reactive StreamsPublisher.
Constructor Detail
ReactiveAdapterRegistry
public ReactiveAdapterRegistry()
Create a registry and auto-register default adapters.- See Also:
getSharedInstance()
Method Detail
hasAdapters
public boolean hasAdapters()
Whether the registry has any adapters which would be the case if any of Reactor, RxJava 2, or RxJava 1 (+ RxJava Reactive Streams bridge) are present on the classpath.
registerReactiveType
public void registerReactiveType(ReactiveTypeDescriptor descriptor, Function<Object,org.reactivestreams.Publisher<?>> toAdapter, Function<org.reactivestreams.Publisher<?>,Object> fromAdapter)
Register a reactive type along with functions to adapt to and from a Reactive StreamsPublisher. The function arguments assume that their input is neithernullnorOptional.
getAdapter
@Nullable public ReactiveAdapter getAdapter(Class<?> reactiveType)
Get the adapter for the given reactive type.- Returns:
- the corresponding adapter, or
nullif 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.- Parameters:
reactiveType- the reactive type (may benullif a concrete source object is given)source- an instance of the reactive type (i.e. to adapt from; may benullif the reactive type is specified)- Returns:
- the corresponding adapter, or
nullif none available
getSharedInstance
public static ReactiveAdapterRegistry getSharedInstance()
Return a shared defaultReactiveAdapterRegistryinstance, lazily building it once needed.NOTE: We highly recommend passing a long-lived, pre-configured
ReactiveAdapterRegistryinstance 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.- Returns:
- the shared
ReactiveAdapterRegistryinstance - Since:
- 5.0.2