detect Lifecycle-implementing FactoryBeans as well (SPR-6545)
This commit is contained in:
parent
5f9b444319
commit
a0c4d2c13c
|
|
@ -217,13 +217,15 @@ public class DefaultLifecycleProcessor implements LifecycleProcessor, BeanFactor
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Lifecycle> getLifecycleBeans() {
|
private Map<String, Lifecycle> getLifecycleBeans() {
|
||||||
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
|
|
||||||
Map<String, Lifecycle> beans = new LinkedHashMap<String, Lifecycle>();
|
Map<String, Lifecycle> beans = new LinkedHashMap<String, Lifecycle>();
|
||||||
for (String beanName : beanNames) {
|
Map<String, SmartLifecycle> smartLifecycles =
|
||||||
if (this.beanFactory.containsSingleton(beanName) ||
|
this.beanFactory.getBeansOfType(SmartLifecycle.class, false, true);
|
||||||
SmartLifecycle.class.isAssignableFrom(this.beanFactory.getType(beanName))) {
|
beans.putAll(smartLifecycles);
|
||||||
Object bean = this.beanFactory.getBean(beanName);
|
String[] singletonNames = this.beanFactory.getSingletonNames();
|
||||||
if (!this.equals(bean)) {
|
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);
|
beans.put(beanName, (Lifecycle) bean);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue