From 9d2f7934deadbb08f7324dab08d6871d0eb1a402 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sun, 13 Dec 2009 15:47:52 +0000 Subject: [PATCH] fixed non-Lifecycle-FactoryBean with exposed Lifecycle object case (SPR-6545) --- .../context/support/DefaultLifecycleProcessor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/org.springframework.context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java b/org.springframework.context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java index 1a7121158b..704ae74e34 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java +++ b/org.springframework.context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java @@ -226,9 +226,10 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false); for (String beanName : beanNames) { String beanNameToRegister = BeanFactoryUtils.transformedBeanName(beanName); - String beanNameToCheck = (this.beanFactory.isFactoryBean(beanNameToRegister) ? - BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName); - if (this.beanFactory.containsSingleton(beanNameToRegister) || + boolean isFactoryBean = this.beanFactory.isFactoryBean(beanNameToRegister); + String beanNameToCheck = (isFactoryBean ? BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName); + if ((this.beanFactory.containsSingleton(beanNameToRegister) && + (!isFactoryBean || Lifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck)))) || SmartLifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck))) { Lifecycle bean = this.beanFactory.getBean(beanNameToCheck, Lifecycle.class); if (bean != this) {