Skip to content

Commit 874e61a

Browse files
committed
Test for async event publication before listener initialized
Closes gh-20904 See gh-23501 See gh-25799
1 parent 4a02893 commit 874e61a

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

Diff for: spring-context/src/test/java/org/springframework/context/event/ApplicationContextEventTests.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ void beanPostProcessorPublishesEvents() {
567567
}
568568

569569
@Test
570-
void initMethodPublishesEvent() {
570+
void initMethodPublishesEvent() { // gh-25799
571571
GenericApplicationContext context = new GenericApplicationContext();
572572
context.registerBeanDefinition("listener", new RootBeanDefinition(BeanThatListens.class));
573573
context.registerBeanDefinition("messageSource", new RootBeanDefinition(StaticMessageSource.class));
@@ -582,7 +582,7 @@ void initMethodPublishesEvent() {
582582
}
583583

584584
@Test
585-
void initMethodPublishesAsyncEvent() {
585+
void initMethodPublishesAsyncEvent() { // gh-25799
586586
GenericApplicationContext context = new GenericApplicationContext();
587587
context.registerBeanDefinition("listener", new RootBeanDefinition(BeanThatListens.class));
588588
context.registerBeanDefinition("messageSource", new RootBeanDefinition(StaticMessageSource.class));
@@ -596,6 +596,21 @@ void initMethodPublishesAsyncEvent() {
596596
context.close();
597597
}
598598

599+
@Test
600+
void initMethodPublishesAsyncEventBeforeListenerInitialized() { // gh-20904
601+
GenericApplicationContext context = new GenericApplicationContext();
602+
context.registerBeanDefinition("messageSource", new RootBeanDefinition(StaticMessageSource.class));
603+
context.registerBeanDefinition("initMethod", new RootBeanDefinition(AsyncEventPublishingInitMethod.class));
604+
context.registerBeanDefinition("listener", new RootBeanDefinition(BeanThatListens.class));
605+
context.refresh();
606+
607+
context.publishEvent(new MyEvent(this));
608+
BeanThatListens listener = context.getBean(BeanThatListens.class);
609+
assertThat(listener.getEventCount()).isEqualTo(3);
610+
611+
context.close();
612+
}
613+
599614

600615
@SuppressWarnings("serial")
601616
public static class MyEvent extends ApplicationEvent {

0 commit comments

Comments
 (0)