Merge branch '2.1.x'
Closes gh-17948
This commit is contained in:
@@ -27,6 +27,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.springframework.aop.scope.ScopedObject;
|
||||
import org.springframework.aop.scope.ScopedProxyUtils;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.PropertyValues;
|
||||
@@ -357,6 +358,9 @@ public class MockitoPostProcessor extends InstantiationAwareBeanPostProcessorAda
|
||||
Assert.state(ReflectionUtils.getField(field, target) == null,
|
||||
() -> "The field " + field + " cannot have an existing value");
|
||||
Object bean = this.beanFactory.getBean(beanName, field.getType());
|
||||
if (bean instanceof ScopedObject) {
|
||||
bean = ((ScopedObject) bean).getTargetObject();
|
||||
}
|
||||
ReflectionUtils.setField(field, target, bean);
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
@@ -442,15 +446,22 @@ public class MockitoPostProcessor extends InstantiationAwareBeanPostProcessorAda
|
||||
|
||||
@Override
|
||||
public Object getEarlyBeanReference(Object bean, String beanName) throws BeansException {
|
||||
return this.mockitoPostProcessor.createSpyIfNecessary(bean, beanName);
|
||||
return this.mockitoPostProcessor.createSpyIfNecessary(bean, getOriginalBeanNameIfScopedTarget(beanName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||
if (bean instanceof FactoryBean) {
|
||||
if (bean instanceof FactoryBean || bean instanceof ScopedObject) {
|
||||
return bean;
|
||||
}
|
||||
return this.mockitoPostProcessor.createSpyIfNecessary(bean, beanName);
|
||||
return this.mockitoPostProcessor.createSpyIfNecessary(bean, getOriginalBeanNameIfScopedTarget(beanName));
|
||||
}
|
||||
|
||||
private String getOriginalBeanNameIfScopedTarget(String beanName) {
|
||||
if (ScopedProxyUtils.isScopedTarget(beanName)) {
|
||||
return beanName.substring("scopedTarget.".length());
|
||||
}
|
||||
return beanName;
|
||||
}
|
||||
|
||||
static void register(BeanDefinitionRegistry registry) {
|
||||
|
||||
Reference in New Issue
Block a user