Performance improvements to NamedContextFactory. (#826)

Fixes gh-825
This commit is contained in:
Spencer Gibb
2020-09-15 14:13:17 -04:00
committed by GitHub
parent ec264fb23e
commit 5f92501a0d
2 changed files with 43 additions and 7 deletions

View File

@@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentHashMap;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.context.ApplicationContext;
@@ -143,10 +144,12 @@ public abstract class NamedContextFactory<C extends NamedContextFactory.Specific
public <T> T getInstance(String name, Class<T> type) {
AnnotationConfigApplicationContext context = getContext(name);
if (BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context,
type).length > 0) {
try {
return context.getBean(type);
}
catch (NoSuchBeanDefinitionException e) {
// ignore
}
return null;
}
@@ -181,11 +184,8 @@ public abstract class NamedContextFactory<C extends NamedContextFactory.Specific
public <T> Map<String, T> getInstances(String name, Class<T> type) {
AnnotationConfigApplicationContext context = getContext(name);
if (BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context,
type).length > 0) {
return BeanFactoryUtils.beansOfTypeIncludingAncestors(context, type);
}
return null;
return BeanFactoryUtils.beansOfTypeIncludingAncestors(context, type);
}
/**