From 52c6a7a6a456b1722af95173d077ba4953ce765c Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 8 Jun 2010 10:08:33 +0000 Subject: [PATCH] revised DefaultLifecycleProcessor's handling of circular dependencies to avoid stack overflow (SPR-7266) git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3400 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../context/support/DefaultLifecycleProcessor.java | 6 ++---- 1 file changed, 2 insertions(+), 4 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 3ddbd953e8f..f0b326ec8bf 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 @@ -152,7 +152,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor * @param beanName the name of the bean to start */ private void doStart(Map lifecycleBeans, String beanName) { - Lifecycle bean = lifecycleBeans.get(beanName); + Lifecycle bean = lifecycleBeans.remove(beanName); if (bean != null && !this.equals(bean)) { String[] dependenciesForBean = this.beanFactory.getDependenciesForBean(beanName); for (String dependency : dependenciesForBean) { @@ -172,7 +172,6 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor logger.debug("Successfully started bean '" + beanName + "'"); } } - lifecycleBeans.remove(beanName); } } @@ -207,7 +206,7 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor private void doStop(Map lifecycleBeans, final String beanName, final CountDownLatch latch, final Set countDownBeanNames) { - Lifecycle bean = lifecycleBeans.get(beanName); + Lifecycle bean = lifecycleBeans.remove(beanName); if (bean != null) { String[] dependentBeans = this.beanFactory.getDependentBeans(beanName); for (String dependentBean : dependentBeans) { @@ -250,7 +249,6 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor logger.warn("Failed to stop bean '" + beanName + "'", ex); } } - lifecycleBeans.remove(beanName); } }