DefaultSingletonBeanRegistry avoids singletonObjects lock wherever possible for non-singleton factory performance

Issue: SPR-9819
This commit is contained in:
Juergen Hoeller 2012-11-08 23:15:38 +01:00
parent e1d11ec99d
commit c24825ca19
1 changed files with 3 additions and 3 deletions

View File

@ -166,7 +166,7 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
}
public Object getSingleton(String beanName) {
return getSingleton(beanName, true);
return getSingleton(beanName, isSingletonCurrentlyInCreation(beanName));
}
/**
@ -179,10 +179,10 @@ public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements
*/
protected Object getSingleton(String beanName, boolean allowEarlyReference) {
Object singletonObject = this.singletonObjects.get(beanName);
if (singletonObject == null) {
if (singletonObject == null && allowEarlyReference) {
synchronized (this.singletonObjects) {
singletonObject = this.earlySingletonObjects.get(beanName);
if (singletonObject == null && allowEarlyReference) {
if (singletonObject == null) {
ObjectFactory singletonFactory = this.singletonFactories.get(beanName);
if (singletonFactory != null) {
singletonObject = singletonFactory.getObject();