Example usage for org.springframework.aop.target AbstractBeanFactoryBasedTargetSource setTargetBeanName

List of usage examples for org.springframework.aop.target AbstractBeanFactoryBasedTargetSource setTargetBeanName

Introduction

In this page you can find the example usage for org.springframework.aop.target AbstractBeanFactoryBasedTargetSource setTargetBeanName.

Prototype

public void setTargetBeanName(String targetBeanName) 

Source Link

Document

Set the name of the target bean in the factory.

Usage

From source file:org.springframework.aop.framework.autoproxy.target.AbstractBeanFactoryBasedTargetSourceCreator.java

@Override
@Nullable//from   ww  w .ja v a2  s. co m
public final TargetSource getTargetSource(Class<?> beanClass, String beanName) {
    AbstractBeanFactoryBasedTargetSource targetSource = createBeanFactoryBasedTargetSource(beanClass, beanName);
    if (targetSource == null) {
        return null;
    }

    if (logger.isDebugEnabled()) {
        logger.debug("Configuring AbstractBeanFactoryBasedTargetSource: " + targetSource);
    }

    DefaultListableBeanFactory internalBeanFactory = getInternalBeanFactoryForBean(beanName);

    // We need to override just this bean definition, as it may reference other beans
    // and we're happy to take the parent's definition for those.
    // Always use prototype scope if demanded.
    BeanDefinition bd = this.beanFactory.getMergedBeanDefinition(beanName);
    GenericBeanDefinition bdCopy = new GenericBeanDefinition(bd);
    if (isPrototypeBased()) {
        bdCopy.setScope(BeanDefinition.SCOPE_PROTOTYPE);
    }
    internalBeanFactory.registerBeanDefinition(beanName, bdCopy);

    // Complete configuring the PrototypeTargetSource.
    targetSource.setTargetBeanName(beanName);
    targetSource.setBeanFactory(internalBeanFactory);

    return targetSource;
}