ApplicationListener is missing from Collection returned by getApplicationListeners() if it was added after the multicaster was initialised [SPR-17324] #21858
Labels
in: core
Issues in core modules (aop, beans, core, context, expression)
status: backported
An issue that has been backported to maintenance branches
type: bug
A general bug
Milestone
Andy Wilkinson opened SPR-17324 and commented
In Boot, if context refresh fails, we publish an
ApplicationFailedEvent
. We can't rely on the context's multicaster being available at this point so we create our own. It is initialised with the collection of listeners returned byAbstractApplicationContext.getApplicationListeners()
. Unfortunately, any listeners that were added after the context's multicaster was initialised are missing from this collection so they do not receive theApplicationFailedEvent
.In
AbstractApplicationContext.addApplicationListener(ApplicationListener<?>)
, would it be possible to always callthis.applicationListeners.add(listener)
rather than only calling it whenthis.applicationEventMulticaster
isnull
?Affects: 5.0.9
Reference URL: spring-projects/spring-boot#14490
Issue Links:
Referenced from: commits c8c0737, d61a7ed
Backported to: 5.0.10
The text was updated successfully, but these errors were encountered: