Allow BeanRegistrationContributionProvider to access the BeanFactory

Closes gh-28384
This commit is contained in:
Stephane Nicoll
2022-04-26 15:02:54 +02:00
parent 88eac7794c
commit 7ea0cc3da2
3 changed files with 59 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.core.io.support.SpringFactoriesLoader;
import org.springframework.core.io.support.SpringFactoriesLoader.ArgumentResolver;
/**
* A {@link BeanFactoryContribution} that generates the bean definitions of a
@@ -62,7 +63,7 @@ public class BeanDefinitionsContribution implements BeanFactoryContribution {
private static List<BeanRegistrationContributionProvider> initializeProviders(DefaultListableBeanFactory beanFactory) {
List<BeanRegistrationContributionProvider> providers = new ArrayList<>(SpringFactoriesLoader.loadFactories(
BeanRegistrationContributionProvider.class, beanFactory.getBeanClassLoader()));
BeanRegistrationContributionProvider.class, beanFactory.getBeanClassLoader(), ArgumentResolver.from(type -> type.isInstance(beanFactory) ? beanFactory : null)));
providers.add(new DefaultBeanRegistrationContributionProvider(beanFactory));
return providers;
}