From 62b11a4a26f0d31b13deb22a135087db806af663 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 13 Dec 2018 09:31:23 +0000 Subject: [PATCH] Add global escape hatch for switching off functional beans This is useful for example if the user is taking care of the functional bean registration in some other way, and still wants to use spring.functional.enabled=false to control that. --- .../config/ContextFunctionCatalogInitializer.java | 11 +++++++---- .../web/function/FunctionEndpointInitializer.java | 10 ++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java index 366079f57..a92d567fc 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogInitializer.java @@ -52,10 +52,12 @@ public class ContextFunctionCatalogInitializer public static final String IGNORE_BACKGROUNDPREINITIALIZER_PROPERTY_NAME = "spring.backgroundpreinitializer.ignore"; + public static boolean enabled = true; + @Override public void initialize(GenericApplicationContext applicationContext) { - if (applicationContext.getEnvironment().getProperty("spring.functional.enabled", - Boolean.class, false)) { + if (enabled && applicationContext.getEnvironment() + .getProperty("spring.functional.enabled", Boolean.class, false)) { ContextFunctionCatalogBeanRegistrar registrar = new ContextFunctionCatalogBeanRegistrar( applicationContext); applicationContext.addBeanFactoryPostProcessor(registrar); @@ -223,9 +225,10 @@ public class ContextFunctionCatalogInitializer } } - + public static class DummyProcessor { - public void setMetadataReaderFactory(MetadataReaderFactory obj) {} + public void setMetadataReaderFactory(MetadataReaderFactory obj) { + } } } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java index c78c470cb..2e08bdbb7 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java @@ -33,6 +33,7 @@ import org.springframework.boot.web.reactive.error.ErrorAttributes; import org.springframework.cloud.function.context.FunctionCatalog; import org.springframework.cloud.function.context.FunctionalSpringApplication; import org.springframework.cloud.function.context.catalog.FunctionInspector; +import org.springframework.cloud.function.context.config.ContextFunctionCatalogInitializer; import org.springframework.cloud.function.json.JsonMapper; import org.springframework.cloud.function.web.BasicStringConverter; import org.springframework.cloud.function.web.RequestProcessor; @@ -78,10 +79,11 @@ class FunctionEndpointInitializer @Override public void initialize(GenericApplicationContext context) { - if (context.getEnvironment().getProperty( - FunctionalSpringApplication.SPRING_WEB_APPLICATION_TYPE, - WebApplicationType.class, - WebApplicationType.REACTIVE) == WebApplicationType.REACTIVE + if (ContextFunctionCatalogInitializer.enabled + && context.getEnvironment().getProperty( + FunctionalSpringApplication.SPRING_WEB_APPLICATION_TYPE, + WebApplicationType.class, + WebApplicationType.REACTIVE) == WebApplicationType.REACTIVE && context.getEnvironment().getProperty("spring.functional.enabled", Boolean.class, false) && ClassUtils.isPresent(