GH-758 Change kotlinToFunctionTransformer to SmartInitializingSingleton

Resolves #758
This commit is contained in:
Oleg Zhurakousky
2021-10-28 08:45:15 +02:00
parent 034532ab3f
commit 4c43d66264

View File

@@ -38,9 +38,9 @@ import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.ConstructorArgumentValues; import org.springframework.beans.factory.config.ConstructorArgumentValues;
import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -55,9 +55,6 @@ import org.springframework.core.ResolvableType;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
/** /**
* Configuration class which defines the required infrastructure to bootstrap Kotlin * Configuration class which defines the required infrastructure to bootstrap Kotlin
* lambdas as invocable functions within the context of the framework. * lambdas as invocable functions within the context of the framework.
@@ -94,13 +91,11 @@ public class KotlinLambdaToFunctionAutoConfiguration {
* @return the bean factory post processor * @return the bean factory post processor
*/ */
@Bean @Bean
public BeanFactoryPostProcessor kotlinToFunctionTransformerOld() { public SmartInitializingSingleton kotlinToFunctionTransformer(ConfigurableListableBeanFactory beanFactory) {
return new BeanFactoryPostProcessor() { return new SmartInitializingSingleton() {
@Override @Override
public void postProcessBeanFactory( public void afterSingletonsInstantiated() {
ConfigurableListableBeanFactory beanFactory) throws BeansException {
String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames(); String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) { for (String beanDefinitionName : beanDefinitionNames) {
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanDefinitionName); BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanDefinitionName);
@@ -115,9 +110,9 @@ public class KotlinLambdaToFunctionAutoConfiguration {
((BeanDefinitionRegistry) beanFactory).registerBeanDefinition(beanDefinitionName + FunctionRegistration.REGISTRATION_NAME_SUFFIX, cbd); ((BeanDefinitionRegistry) beanFactory).registerBeanDefinition(beanDefinitionName + FunctionRegistration.REGISTRATION_NAME_SUFFIX, cbd);
} }
} }
} }
} }
}; };
} }