Browse Source

Shared ReactiveAdapterRegistry in web reactive config

pull/1240/merge
Rossen Stoyanchev 9 years ago
parent
commit
25b95efad9
  1. 18
      spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfigurationSupport.java

18
spring-web-reactive/src/main/java/org/springframework/web/reactive/config/WebReactiveConfigurationSupport.java

@ -28,6 +28,7 @@ import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.core.ReactiveAdapterRegistry;
import org.springframework.core.codec.ByteArrayDecoder; import org.springframework.core.codec.ByteArrayDecoder;
import org.springframework.core.codec.ByteArrayEncoder; import org.springframework.core.codec.ByteArrayEncoder;
import org.springframework.core.codec.ByteBufferDecoder; import org.springframework.core.codec.ByteBufferDecoder;
@ -266,6 +267,7 @@ public class WebReactiveConfigurationSupport implements ApplicationContextAware
RequestMappingHandlerAdapter adapter = createRequestMappingHandlerAdapter(); RequestMappingHandlerAdapter adapter = createRequestMappingHandlerAdapter();
adapter.setMessageReaders(getMessageReaders()); adapter.setMessageReaders(getMessageReaders());
adapter.setWebBindingInitializer(getConfigurableWebBindingInitializer()); adapter.setWebBindingInitializer(getConfigurableWebBindingInitializer());
adapter.setReactiveAdapterRegistry(getReactiveAdapterRegistry());
List<HandlerMethodArgumentResolver> resolvers = new ArrayList<>(); List<HandlerMethodArgumentResolver> resolvers = new ArrayList<>();
addArgumentResolvers(resolvers); addArgumentResolvers(resolvers);
@ -369,6 +371,13 @@ public class WebReactiveConfigurationSupport implements ApplicationContextAware
protected void addFormatters(FormatterRegistry registry) { protected void addFormatters(FormatterRegistry registry) {
} }
/**
* Override to plug in a custom {@link ReactiveAdapterRegistry}.
*/
protected ReactiveAdapterRegistry getReactiveAdapterRegistry() {
return new ReactiveAdapterRegistry();
}
/** /**
* Return a global {@link Validator} instance for example for validating * Return a global {@link Validator} instance for example for validating
* {@code @RequestBody} method arguments. * {@code @RequestBody} method arguments.
@ -423,12 +432,14 @@ public class WebReactiveConfigurationSupport implements ApplicationContextAware
@Bean @Bean
public ResponseEntityResultHandler responseEntityResultHandler() { public ResponseEntityResultHandler responseEntityResultHandler() {
return new ResponseEntityResultHandler(getMessageWriters(), webReactiveContentTypeResolver()); return new ResponseEntityResultHandler(
getMessageWriters(), webReactiveContentTypeResolver(), getReactiveAdapterRegistry());
} }
@Bean @Bean
public ResponseBodyResultHandler responseBodyResultHandler() { public ResponseBodyResultHandler responseBodyResultHandler() {
return new ResponseBodyResultHandler(getMessageWriters(), webReactiveContentTypeResolver()); return new ResponseBodyResultHandler(
getMessageWriters(), webReactiveContentTypeResolver(), getReactiveAdapterRegistry());
} }
/** /**
@ -493,7 +504,8 @@ public class WebReactiveConfigurationSupport implements ApplicationContextAware
ViewResolverRegistry registry = new ViewResolverRegistry(getApplicationContext()); ViewResolverRegistry registry = new ViewResolverRegistry(getApplicationContext());
configureViewResolvers(registry); configureViewResolvers(registry);
List<ViewResolver> resolvers = registry.getViewResolvers(); List<ViewResolver> resolvers = registry.getViewResolvers();
ViewResolutionResultHandler handler = new ViewResolutionResultHandler(resolvers, webReactiveContentTypeResolver()); ViewResolutionResultHandler handler = new ViewResolutionResultHandler(
resolvers, webReactiveContentTypeResolver(), getReactiveAdapterRegistry());
handler.setDefaultViews(registry.getDefaultViews()); handler.setDefaultViews(registry.getDefaultViews());
handler.setOrder(registry.getOrder()); handler.setOrder(registry.getOrder());
return handler; return handler;

Loading…
Cancel
Save