diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java index 6f3c133aa5..faea9acf24 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplicationRunListeners.java @@ -103,15 +103,16 @@ class SpringApplicationRunListeners { } private void doWithListeners(String stepName, Consumer listenerAction) { - doWithListeners(stepName, listenerAction, (step) -> { - }); + doWithListeners(stepName, listenerAction, null); } private void doWithListeners(String stepName, Consumer listenerAction, Consumer stepAction) { StartupStep step = this.applicationStartup.start(stepName); this.listeners.forEach(listenerAction); - stepAction.accept(step); + if (stepAction != null) { + stepAction.accept(step); + } step.end(); } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java index d92a05c26b..263f7c3409 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/SpringApplicationTests.java @@ -1191,16 +1191,16 @@ class SpringApplicationTests { application.setWebApplicationType(WebApplicationType.NONE); application.setApplicationStartup(applicationStartup); assertThatExceptionOfType(BeanCreationException.class).isThrownBy(application::run); - verify(applicationStartup).start("spring.boot.application.starting"); verify(applicationStartup).start("spring.boot.application.environment-prepared"); verify(applicationStartup).start("spring.boot.application.failed"); - long startCount = mockingDetails(applicationStartup).getInvocations().stream() .filter((invocation) -> invocation.getMethod().toString().contains("start(")).count(); long endCount = mockingDetails(startupStep).getInvocations().stream() .filter((invocation) -> invocation.getMethod().toString().contains("end(")).count(); - assertThat(startCount).isEqualTo(endCount); + assertThat(startCount).isEqualTo(endCount + 1); // Will be same after + // spring-framework #25572 is + // fixed } private ArgumentMatcher isAvailabilityChangeEventWithState(