From 521c6d3397c428ddcf45c6db2079d82ba5090f4a Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 10 Jul 2019 12:57:57 +0100 Subject: [PATCH] Add proxyTargetBeans = false --- .../cloud/function/task/TaskApplication.java | 2 +- .../cloud/function/task/TaskConfiguration.java | 16 +++++++--------- .../cloud/function/web/RestApplication.java | 2 +- .../web/flux/ReactorAutoConfiguration.java | 5 ++--- .../web/mvc/ReactorAutoConfiguration.java | 5 ++--- .../FunctionExporterAutoConfiguration.java | 16 ++++++---------- .../web/source/FunctionExporterInitializer.java | 7 +++++-- 7 files changed, 24 insertions(+), 29 deletions(-) diff --git a/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskApplication.java b/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskApplication.java index 724bf009f..6011e848b 100644 --- a/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskApplication.java +++ b/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskApplication.java @@ -23,7 +23,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @author Mark Fisher */ // @checkstyle:off -@SpringBootApplication +@SpringBootApplication(proxyBeanMethods = false) public class TaskApplication { public static void main(String[] args) { diff --git a/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java b/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java index 1208be8ec..f7f48f8ea 100644 --- a/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java +++ b/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java @@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration; /** * @author Mark Fisher */ -@Configuration +@Configuration(proxyBeanMethods = false) @EnableTask @EnableConfigurationProperties(TaskConfigurationProperties.class) @ConditionalOnClass({ EnableTask.class }) @@ -46,10 +46,9 @@ public class TaskConfiguration { @Bean public CommandLineRunner commandLineRunner(FunctionCatalog registry) { - final Supplier> supplier = registry.lookup(Supplier.class, - this.properties.getSupplier()); - final Function, Publisher> function = registry - .lookup(Function.class, this.properties.getFunction()); + final Supplier> supplier = registry.lookup(Supplier.class, this.properties.getSupplier()); + final Function, Publisher> function = registry.lookup(Function.class, + this.properties.getFunction()); final Consumer> consumer = consumer(registry); CommandLineRunner runner = new CommandLineRunner() { @@ -62,13 +61,12 @@ public class TaskConfiguration { } private Consumer> consumer(FunctionCatalog registry) { - Consumer> consumer = registry.lookup(Consumer.class, - this.properties.getConsumer()); + Consumer> consumer = registry.lookup(Consumer.class, this.properties.getConsumer()); if (consumer != null) { return consumer; } - Function, Publisher> function = registry - .lookup(Function.class, this.properties.getConsumer()); + Function, Publisher> function = registry.lookup(Function.class, + this.properties.getConsumer()); return flux -> Mono.from(function.apply(flux)).subscribe(); } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RestApplication.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RestApplication.java index c79136550..529aded42 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RestApplication.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RestApplication.java @@ -24,7 +24,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; * @author Mark Fisher */ // @checkstyle:off -@SpringBootConfiguration +@SpringBootConfiguration(proxyBeanMethods = false) @EnableAutoConfiguration public class RestApplication { diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/ReactorAutoConfiguration.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/ReactorAutoConfiguration.java index b30073609..2c1fbff83 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/ReactorAutoConfiguration.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/flux/ReactorAutoConfiguration.java @@ -41,7 +41,7 @@ import org.springframework.web.method.support.AsyncHandlerMethodReturnValueHandl * @author Mark Fisher * @author Oleg Zhurakousky */ -@Configuration +@Configuration(proxyBeanMethods = false) @ConditionalOnClass({ Flux.class, AsyncHandlerMethodReturnValueHandler.class }) @ConditionalOnWebApplication(type = Type.REACTIVE) @Import({ FunctionController.class, RequestProcessor.class }) @@ -49,8 +49,7 @@ import org.springframework.web.method.support.AsyncHandlerMethodReturnValueHandl public class ReactorAutoConfiguration { @Bean - public FunctionHandlerMapping functionHandlerMapping(FunctionCatalog catalog, - FunctionController controller) { + public FunctionHandlerMapping functionHandlerMapping(FunctionCatalog catalog, FunctionController controller) { return new FunctionHandlerMapping(catalog, controller); } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/ReactorAutoConfiguration.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/ReactorAutoConfiguration.java index a2bde5620..d10b4bfe3 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/ReactorAutoConfiguration.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/ReactorAutoConfiguration.java @@ -41,7 +41,7 @@ import org.springframework.web.method.support.AsyncHandlerMethodReturnValueHandl * @author Mark Fisher * @author Oleg Zhurakousky */ -@Configuration +@Configuration(proxyBeanMethods = false) @ConditionalOnWebApplication(type = Type.SERVLET) @ConditionalOnClass({ Flux.class, AsyncHandlerMethodReturnValueHandler.class }) @Import({ FunctionController.class, RequestProcessor.class }) @@ -49,8 +49,7 @@ import org.springframework.web.method.support.AsyncHandlerMethodReturnValueHandl public class ReactorAutoConfiguration { @Bean - public FunctionHandlerMapping functionHandlerMapping(FunctionCatalog catalog, - FunctionController controller) { + public FunctionHandlerMapping functionHandlerMapping(FunctionCatalog catalog, FunctionController controller) { return new FunctionHandlerMapping(catalog, controller); } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterAutoConfiguration.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterAutoConfiguration.java index c431cb5f6..679a55e16 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterAutoConfiguration.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterAutoConfiguration.java @@ -41,7 +41,7 @@ import org.springframework.web.reactive.function.client.WebClient; * @author Dave Syer * */ -@Configuration +@Configuration(proxyBeanMethods = false) @ConditionalOnClass(WebClient.class) @Conditional(SourceActiveCondition.class) @EnableConfigurationProperties(ExporterProperties.class) @@ -56,21 +56,17 @@ public class FunctionExporterAutoConfiguration { @Bean @ConditionalOnProperty(prefix = "spring.cloud.function.web.export.sink", name = "url") - public SupplierExporter sourceForwarder(RequestBuilder requestBuilder, - DestinationResolver destinationResolver, FunctionCatalog catalog, - WebClient.Builder builder) { - return new SupplierExporter(requestBuilder, destinationResolver, catalog, - builder.build(), this.props); + public SupplierExporter sourceForwarder(RequestBuilder requestBuilder, DestinationResolver destinationResolver, + FunctionCatalog catalog, WebClient.Builder builder) { + return new SupplierExporter(requestBuilder, destinationResolver, catalog, builder.build(), this.props); } @Bean @ConditionalOnProperty(prefix = "spring.cloud.function.web.export.source", name = "url") public FunctionRegistration>> origin(WebClient.Builder builder) { HttpSupplier supplier = new HttpSupplier(builder.build(), this.props); - FunctionRegistration>> registration = new FunctionRegistration<>( - supplier); - FunctionType type = FunctionType.supplier(this.props.getSource().getType()) - .wrap(Flux.class); + FunctionRegistration>> registration = new FunctionRegistration<>(supplier); + FunctionType type = FunctionType.supplier(this.props.getSource().getType()).wrap(Flux.class); if (this.props.getSource().isIncludeHeaders()) { type = type.message(); } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java index c20c94a16..a7bcdf3f7 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/source/FunctionExporterInitializer.java @@ -46,8 +46,11 @@ class FunctionExporterInitializer implements ApplicationContextInitializer WebClient.builder()); + if (ClassUtils.isPresent("org.springframework.web.reactive.function.client.WebClient", + getClass().getClassLoader())) { + if (context.getBeanFactory().getBeanNamesForType(WebClient.Builder.class, false, false).length == 0) { + context.registerBean(WebClient.Builder.class, () -> WebClient.builder()); + } } }