fixed non-Lifecycle-FactoryBean with exposed Lifecycle object case (SPR-6545)
This commit is contained in:
parent
35354ad520
commit
9d2f7934de
|
|
@ -226,9 +226,10 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||||
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
|
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
|
||||||
for (String beanName : beanNames) {
|
for (String beanName : beanNames) {
|
||||||
String beanNameToRegister = BeanFactoryUtils.transformedBeanName(beanName);
|
String beanNameToRegister = BeanFactoryUtils.transformedBeanName(beanName);
|
||||||
String beanNameToCheck = (this.beanFactory.isFactoryBean(beanNameToRegister) ?
|
boolean isFactoryBean = this.beanFactory.isFactoryBean(beanNameToRegister);
|
||||||
BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName);
|
String beanNameToCheck = (isFactoryBean ? BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName);
|
||||||
if (this.beanFactory.containsSingleton(beanNameToRegister) ||
|
if ((this.beanFactory.containsSingleton(beanNameToRegister) &&
|
||||||
|
(!isFactoryBean || Lifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck)))) ||
|
||||||
SmartLifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck))) {
|
SmartLifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck))) {
|
||||||
Lifecycle bean = this.beanFactory.getBean(beanNameToCheck, Lifecycle.class);
|
Lifecycle bean = this.beanFactory.getBean(beanNameToCheck, Lifecycle.class);
|
||||||
if (bean != this) {
|
if (bean != this) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue