removed hard ScopedProxyUtils dependency in ConfigurationClassEnhancer

master
Juergen Hoeller 15 years ago
parent 776f0490f9
commit 198911e0d2
  1. 14
      org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java
  2. 4
      org.springframework.context/src/main/java/org/springframework/context/annotation/ScopedProxyCreator.java

@ -29,7 +29,6 @@ import net.sf.cglib.proxy.NoOp;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.aop.scope.ScopedProxyUtils;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.core.annotation.AnnotationUtils;
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
* handling of bean semantics such as scoping and AOP proxying.
* @author Chris Beams
* @see Bean
* @see ConfigurationClassEnhancer
*/
private static class BeanMethodInterceptor implements MethodInterceptor {
private static final Log logger = LogFactory.getLog(BeanMethodInterceptor.class);
private final ConfigurableBeanFactory beanFactory;
public BeanMethodInterceptor(ConfigurableBeanFactory beanFactory) {
@ -155,10 +151,9 @@ class ConfigurationClassEnhancer {
}
// determine whether this bean is a scoped-proxy
// TODO: remove hard ScopedProxyUtils dependency
Scope scope = AnnotationUtils.findAnnotation(method, Scope.class);
if (scope != null && scope.proxyMode() != ScopedProxyMode.NO) {
String scopedBeanName = ScopedProxyUtils.getTargetBeanName(beanName);
String scopedBeanName = ScopedProxyCreator.getTargetBeanName(beanName);
if (this.beanFactory.isCurrentlyInCreation(scopedBeanName)) {
beanName = scopedBeanName;
}
@ -168,12 +163,7 @@ class ConfigurationClassEnhancer {
// container for already cached instances
if (factoryContainsBean(beanName)) {
// we have an already existing cached instance of this bean -> retrieve it
Object cachedBean = 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;
return this.beanFactory.getBean(beanName);
}
// actually create and return the bean

@ -36,4 +36,8 @@ class ScopedProxyCreator {
return ScopedProxyUtils.createScopedProxy(definitionHolder, registry, proxyTargetClass);
}
public static String getTargetBeanName(String originalBeanName) {
return ScopedProxyUtils.getTargetBeanName(originalBeanName);
}
}

Loading…
Cancel
Save