removed hard ScopedProxyUtils dependency in ConfigurationClassEnhancer
This commit is contained in:
parent
776f0490f9
commit
198911e0d2
|
|
@ -29,7 +29,6 @@ import net.sf.cglib.proxy.NoOp;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import org.springframework.aop.scope.ScopedProxyUtils;
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.core.annotation.AnnotationUtils;
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
@ -126,14 +125,11 @@ class ConfigurationClassEnhancer {
|
||||||
/**
|
/**
|
||||||
* Intercepts the invocation of any {@link Bean}-annotated methods in order to ensure proper
|
* Intercepts the invocation of any {@link Bean}-annotated methods in order to ensure proper
|
||||||
* handling of bean semantics such as scoping and AOP proxying.
|
* handling of bean semantics such as scoping and AOP proxying.
|
||||||
* @author Chris Beams
|
|
||||||
* @see Bean
|
* @see Bean
|
||||||
* @see ConfigurationClassEnhancer
|
* @see ConfigurationClassEnhancer
|
||||||
*/
|
*/
|
||||||
private static class BeanMethodInterceptor implements MethodInterceptor {
|
private static class BeanMethodInterceptor implements MethodInterceptor {
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(BeanMethodInterceptor.class);
|
|
||||||
|
|
||||||
private final ConfigurableBeanFactory beanFactory;
|
private final ConfigurableBeanFactory beanFactory;
|
||||||
|
|
||||||
public BeanMethodInterceptor(ConfigurableBeanFactory beanFactory) {
|
public BeanMethodInterceptor(ConfigurableBeanFactory beanFactory) {
|
||||||
|
|
@ -155,10 +151,9 @@ class ConfigurationClassEnhancer {
|
||||||
}
|
}
|
||||||
|
|
||||||
// determine whether this bean is a scoped-proxy
|
// determine whether this bean is a scoped-proxy
|
||||||
// TODO: remove hard ScopedProxyUtils dependency
|
|
||||||
Scope scope = AnnotationUtils.findAnnotation(method, Scope.class);
|
Scope scope = AnnotationUtils.findAnnotation(method, Scope.class);
|
||||||
if (scope != null && scope.proxyMode() != ScopedProxyMode.NO) {
|
if (scope != null && scope.proxyMode() != ScopedProxyMode.NO) {
|
||||||
String scopedBeanName = ScopedProxyUtils.getTargetBeanName(beanName);
|
String scopedBeanName = ScopedProxyCreator.getTargetBeanName(beanName);
|
||||||
if (this.beanFactory.isCurrentlyInCreation(scopedBeanName)) {
|
if (this.beanFactory.isCurrentlyInCreation(scopedBeanName)) {
|
||||||
beanName = scopedBeanName;
|
beanName = scopedBeanName;
|
||||||
}
|
}
|
||||||
|
|
@ -168,12 +163,7 @@ class ConfigurationClassEnhancer {
|
||||||
// container for already cached instances
|
// container for already cached instances
|
||||||
if (factoryContainsBean(beanName)) {
|
if (factoryContainsBean(beanName)) {
|
||||||
// we have an already existing cached instance of this bean -> retrieve it
|
// we have an already existing cached instance of this bean -> retrieve it
|
||||||
Object cachedBean = this.beanFactory.getBean(beanName);
|
return this.beanFactory.getBean(beanName);
|
||||||
if (logger.isDebugEnabled()) {
|
|
||||||
logger.debug(String.format("Returning cached object [%s] for @Bean method %s.%s",
|
|
||||||
cachedBean, method.getDeclaringClass().getSimpleName(), beanName));
|
|
||||||
}
|
|
||||||
return cachedBean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// actually create and return the bean
|
// actually create and return the bean
|
||||||
|
|
|
||||||
|
|
@ -36,4 +36,8 @@ class ScopedProxyCreator {
|
||||||
return ScopedProxyUtils.createScopedProxy(definitionHolder, registry, proxyTargetClass);
|
return ScopedProxyUtils.createScopedProxy(definitionHolder, registry, proxyTargetClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getTargetBeanName(String originalBeanName) {
|
||||||
|
return ScopedProxyUtils.getTargetBeanName(originalBeanName);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue