Browse Source

detect Lifecycle-implementing FactoryBeans as well (SPR-6545)

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@2636 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Juergen Hoeller 16 years ago
parent
commit
38ef760372
  1. 14
      org.springframework.context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java

14
org.springframework.context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java

@ -217,13 +217,15 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor @@ -217,13 +217,15 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
}
private Map<String, Lifecycle> getLifecycleBeans() {
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
Map<String, Lifecycle> beans = new LinkedHashMap<String, Lifecycle>();
for (String beanName : beanNames) {
if (this.beanFactory.containsSingleton(beanName) ||
SmartLifecycle.class.isAssignableFrom(this.beanFactory.getType(beanName))) {
Object bean = this.beanFactory.getBean(beanName);
if (!this.equals(bean)) {
Map<String, SmartLifecycle> smartLifecycles =
this.beanFactory.getBeansOfType(SmartLifecycle.class, false, true);
beans.putAll(smartLifecycles);
String[] singletonNames = this.beanFactory.getSingletonNames();
for (String beanName : singletonNames) {
if (!beans.containsKey(beanName)) {
Object bean = this.beanFactory.getSingleton(beanName);
if (bean instanceof Lifecycle && !this.equals(bean)) {
beans.put(beanName, (Lifecycle) bean);
}
}

Loading…
Cancel
Save