From a03c3e30a1f7c0de5a1ef3d9e8298fce8b4cb271 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) git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2639 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../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 1a7121158b0..704ae74e340 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) {