From ce6f14bd8b8294df4928cc9a0b356daa26759000 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 3 Feb 2010 23:09:42 +0000 Subject: [PATCH] refined addApplicationListener to work any time during the refresh phase --- .../context/support/AbstractApplicationContext.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index e94f070118..57fe139254 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -365,8 +365,8 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader } public void addApplicationListener(ApplicationListener listener) { - if (isActive()) { - addListener(listener); + if (this.applicationEventMulticaster != null) { + this.applicationEventMulticaster.addApplicationListener(listener); } else { this.applicationListeners.add(listener); @@ -838,8 +838,13 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader /** * Subclasses can invoke this method to register a listener. * Any beans in the context that are listeners are automatically added. + *

Note: This method only works within an active application context, + * i.e. when an ApplicationEventMulticaster is already available. Generally + * prefer the use of {@link #addApplicationListener} which is more flexible. * @param listener the listener to register + * @deprecated as of Spring 3.0, in favor of {@link #addApplicationListener} */ + @Deprecated protected void addListener(ApplicationListener listener) { getApplicationEventMulticaster().addApplicationListener(listener); } -- GitLab