inner beans detected as ApplicationListeners as well (SPR-6049)

This commit is contained in:
Juergen Hoeller
2009-11-12 17:47:34 +00:00
parent 94aad0b537
commit 0e1b04d082
4 changed files with 72 additions and 12 deletions

View File

@@ -25,6 +25,7 @@ import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.beans.TestBean;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.ApplicationContext;
@@ -126,6 +127,19 @@ public class ApplicationContextEventTests {
assertEquals("The event was not received by the listener", 2, broadcaster.receivedCount);
}
@Test
public void innerBeanAsListener() {
StaticApplicationContext context = new StaticApplicationContext();
RootBeanDefinition listenerDef = new RootBeanDefinition(TestBean.class);
listenerDef.getPropertyValues().addPropertyValue("friends", new RootBeanDefinition(BeanThatListens.class));
context.registerBeanDefinition("listener", listenerDef);
context.refresh();
context.publishEvent(new MyEvent(this));
context.publishEvent(new MyEvent(this));
TestBean listener = context.getBean(TestBean.class);
assertEquals(3, ((BeanThatListens) listener.getFriends().iterator().next()).getEventCount());
}
public static class MyEvent extends ApplicationEvent {