Skip to content

Commit 9d2f793

Browse files
committed
fixed non-Lifecycle-FactoryBean with exposed Lifecycle object case (SPR-6545)
1 parent 35354ad commit 9d2f793

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

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

+4-3
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,10 @@ private Map<String, Lifecycle> getLifecycleBeans() {
226226
String[] beanNames = this.beanFactory.getBeanNamesForType(Lifecycle.class, false, false);
227227
for (String beanName : beanNames) {
228228
String beanNameToRegister = BeanFactoryUtils.transformedBeanName(beanName);
229-
String beanNameToCheck = (this.beanFactory.isFactoryBean(beanNameToRegister) ?
230-
BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName);
231-
if (this.beanFactory.containsSingleton(beanNameToRegister) ||
229+
boolean isFactoryBean = this.beanFactory.isFactoryBean(beanNameToRegister);
230+
String beanNameToCheck = (isFactoryBean ? BeanFactory.FACTORY_BEAN_PREFIX + beanName : beanName);
231+
if ((this.beanFactory.containsSingleton(beanNameToRegister) &&
232+
(!isFactoryBean || Lifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck)))) ||
232233
SmartLifecycle.class.isAssignableFrom(this.beanFactory.getType(beanNameToCheck))) {
233234
Lifecycle bean = this.beanFactory.getBean(beanNameToCheck, Lifecycle.class);
234235
if (bean != this) {

0 commit comments

Comments
 (0)