Merge branch '6.2.x'

# Conflicts:
#	spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java
#	spring-beans/src/test/java/org/springframework/beans/factory/BeanFactoryUtilsTests.java
This commit is contained in:
Juergen Hoeller 2025-06-27 12:31:46 +02:00
commit 02ff681c73
1 changed files with 0 additions and 7 deletions

View File

@ -208,7 +208,6 @@ public class StaticListableBeanFactory implements ListableBeanFactory {
public boolean isSingleton(String name) throws NoSuchBeanDefinitionException { public boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
String beanName = BeanFactoryUtils.transformedBeanName(name); String beanName = BeanFactoryUtils.transformedBeanName(name);
Object bean = obtainBean(beanName); Object bean = obtainBean(beanName);
// In case of FactoryBean, return singleton status of created object.
if (bean instanceof FactoryBean<?> factoryBean && !BeanFactoryUtils.isFactoryDereference(name)) { if (bean instanceof FactoryBean<?> factoryBean && !BeanFactoryUtils.isFactoryDereference(name)) {
return factoryBean.isSingleton(); return factoryBean.isSingleton();
} }
@ -219,7 +218,6 @@ public class StaticListableBeanFactory implements ListableBeanFactory {
public boolean isPrototype(String name) throws NoSuchBeanDefinitionException { public boolean isPrototype(String name) throws NoSuchBeanDefinitionException {
String beanName = BeanFactoryUtils.transformedBeanName(name); String beanName = BeanFactoryUtils.transformedBeanName(name);
Object bean = obtainBean(beanName); Object bean = obtainBean(beanName);
// In case of FactoryBean, return prototype status of created object.
return (!BeanFactoryUtils.isFactoryDereference(name) && return (!BeanFactoryUtils.isFactoryDereference(name) &&
((bean instanceof SmartFactoryBean<?> smartFactoryBean && smartFactoryBean.isPrototype()) || ((bean instanceof SmartFactoryBean<?> smartFactoryBean && smartFactoryBean.isPrototype()) ||
(bean instanceof FactoryBean<?> factoryBean && !factoryBean.isSingleton()))); (bean instanceof FactoryBean<?> factoryBean && !factoryBean.isSingleton())));
@ -263,7 +261,6 @@ public class StaticListableBeanFactory implements ListableBeanFactory {
String beanName = BeanFactoryUtils.transformedBeanName(name); String beanName = BeanFactoryUtils.transformedBeanName(name);
Object bean = obtainBean(beanName); Object bean = obtainBean(beanName);
if (bean instanceof FactoryBean<?> factoryBean && !BeanFactoryUtils.isFactoryDereference(name)) { if (bean instanceof FactoryBean<?> factoryBean && !BeanFactoryUtils.isFactoryDereference(name)) {
// If it's a FactoryBean, we want to look at what it creates, not the factory class.
return factoryBean.getObjectType(); return factoryBean.getObjectType();
} }
return bean.getClass(); return bean.getClass();
@ -417,9 +414,7 @@ public class StaticListableBeanFactory implements ListableBeanFactory {
for (Map.Entry<String, Object> entry : this.beans.entrySet()) { for (Map.Entry<String, Object> entry : this.beans.entrySet()) {
String beanName = entry.getKey(); String beanName = entry.getKey();
Object beanInstance = entry.getValue(); Object beanInstance = entry.getValue();
// Is bean a FactoryBean?
if (beanInstance instanceof FactoryBean<?> factoryBean && !isFactoryType) { if (beanInstance instanceof FactoryBean<?> factoryBean && !isFactoryType) {
// Match object created by FactoryBean.
if ((includeNonSingletons || factoryBean.isSingleton()) && if ((includeNonSingletons || factoryBean.isSingleton()) &&
(type == null || isTypeMatch(factoryBean, type))) { (type == null || isTypeMatch(factoryBean, type))) {
matches.put(beanName, getBean(beanName, type)); matches.put(beanName, getBean(beanName, type));
@ -427,8 +422,6 @@ public class StaticListableBeanFactory implements ListableBeanFactory {
} }
else { else {
if (type == null || type.isInstance(beanInstance)) { if (type == null || type.isInstance(beanInstance)) {
// If type to match is FactoryBean, return FactoryBean itself.
// Else, return bean instance.
if (isFactoryType) { if (isFactoryType) {
beanName = FACTORY_BEAN_PREFIX + beanName; beanName = FACTORY_BEAN_PREFIX + beanName;
} }