|
|
@ -138,7 +138,8 @@ public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport |
|
|
|
|
|
|
|
|
|
|
|
private final Set<String> targetSourcedBeans = Collections.newSetFromMap(new ConcurrentHashMap<>(16)); |
|
|
|
private final Set<String> targetSourcedBeans = Collections.newSetFromMap(new ConcurrentHashMap<>(16)); |
|
|
|
|
|
|
|
|
|
|
|
private final Map<Object, Object> earlyProxyReferences = new ConcurrentHashMap<>(16); |
|
|
|
/** Cache of early target objects: cacheKey to bean instance. */ |
|
|
|
|
|
|
|
private final Map<Object, Object> earlyTargetReferences = new ConcurrentHashMap<>(16); |
|
|
|
|
|
|
|
|
|
|
|
private final Map<Object, Class<?>> proxyTypes = new ConcurrentHashMap<>(16); |
|
|
|
private final Map<Object, Class<?>> proxyTypes = new ConcurrentHashMap<>(16); |
|
|
|
|
|
|
|
|
|
|
@ -265,7 +266,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Object getEarlyBeanReference(Object bean, String beanName) { |
|
|
|
public Object getEarlyBeanReference(Object bean, String beanName) { |
|
|
|
Object cacheKey = getCacheKey(bean.getClass(), beanName); |
|
|
|
Object cacheKey = getCacheKey(bean.getClass(), beanName); |
|
|
|
this.earlyProxyReferences.put(cacheKey, bean); |
|
|
|
this.earlyTargetReferences.put(cacheKey, bean); |
|
|
|
return wrapIfNecessary(bean, beanName, cacheKey); |
|
|
|
return wrapIfNecessary(bean, beanName, cacheKey); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -314,7 +315,7 @@ public abstract class AbstractAutoProxyCreator extends ProxyProcessorSupport |
|
|
|
public Object postProcessAfterInitialization(@Nullable Object bean, String beanName) { |
|
|
|
public Object postProcessAfterInitialization(@Nullable Object bean, String beanName) { |
|
|
|
if (bean != null) { |
|
|
|
if (bean != null) { |
|
|
|
Object cacheKey = getCacheKey(bean.getClass(), beanName); |
|
|
|
Object cacheKey = getCacheKey(bean.getClass(), beanName); |
|
|
|
if (this.earlyProxyReferences.remove(cacheKey) != bean) { |
|
|
|
if (this.earlyTargetReferences.remove(cacheKey) != bean) { |
|
|
|
return wrapIfNecessary(bean, beanName, cacheKey); |
|
|
|
return wrapIfNecessary(bean, beanName, cacheKey); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|