Skip to content

ApplicationListener is missing from Collection returned by getApplicationListeners() if it was added after the multicaster was initialised [SPR-17324] #21858

Closed
@spring-projects-issues

Description

@spring-projects-issues

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 by AbstractApplicationContext.getApplicationListeners(). Unfortunately, any listeners that were added after the context's multicaster was initialised are missing from this collection so they do not receive the ApplicationFailedEvent.

In AbstractApplicationContext.addApplicationListener(ApplicationListener<?>), would it be possible to always call this.applicationListeners.add(listener) rather than only calling it when this.applicationEventMulticaster is null?


Affects: 5.0.9

Reference URL: spring-projects/spring-boot#14490

Issue Links:

Referenced from: commits c8c0737, d61a7ed

Backported to: 5.0.10

Metadata

Metadata

Assignees

Labels

in: coreIssues in core modules (aop, beans, core, context, expression)status: backportedAn issue that has been backported to maintenance branchestype: bugA general bug

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions