Reflection hack to provide Spring Boot 2.0 compatibility
This commit is contained in:
@@ -30,6 +30,7 @@ import java.util.jar.Manifest;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.cloud.function.context.catalog.FunctionInspector;
|
||||
@@ -85,8 +86,7 @@ public class SpringFunctionInitializer implements Closeable {
|
||||
return;
|
||||
}
|
||||
logger.info("Initializing: " + configurationClass);
|
||||
SpringApplicationBuilder builder = new SpringApplicationBuilder(
|
||||
configurationClass);
|
||||
SpringApplicationBuilder builder = springApplication();
|
||||
ConfigurableApplicationContext context = builder.web(false).run();
|
||||
context.getAutowireCapableBeanFactory().autowireBean(this);
|
||||
String name = context.getEnvironment().getProperty("function.name");
|
||||
@@ -116,6 +116,19 @@ public class SpringFunctionInitializer implements Closeable {
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
private SpringApplicationBuilder springApplication() {
|
||||
if (ClassUtils.hasConstructor(SpringApplicationBuilder.class, Object[].class)) {
|
||||
SpringApplicationBuilder builder = new SpringApplicationBuilder(
|
||||
configurationClass);
|
||||
return builder;
|
||||
}
|
||||
// Forward compatibility with Spring Boot 2.0 via reflection
|
||||
return BeanUtils.instantiateClass(
|
||||
ClassUtils.getConstructorIfAvailable(SpringApplicationBuilder.class,
|
||||
Class[].class),
|
||||
new Object[] { new Class<?>[] { configurationClass } });
|
||||
}
|
||||
|
||||
protected Class<?> getInputType() {
|
||||
if (inspector != null) {
|
||||
return inspector.getInputType(function());
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>1.5.3.RELEASE</version>
|
||||
<version>1.5.9.RELEASE</version>
|
||||
<relativePath /> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user