From 25a1e8d414a294a8d3e0d062eb9a01f295209cee Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 2 Jun 2023 20:42:37 +0200 Subject: [PATCH] Reset common caches before LifecycleProcessor-initiated checkpoint See gh-29921 --- .../context/support/AbstractApplicationContext.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index 871d166e512..921667b5114 100644 --- a/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -463,7 +463,7 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader @Override public void setApplicationStartup(ApplicationStartup applicationStartup) { - Assert.notNull(applicationStartup, "applicationStartup must not be null"); + Assert.notNull(applicationStartup, "ApplicationStartup must not be null"); this.applicationStartup = applicationStartup; } @@ -628,9 +628,6 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader } finally { - // Reset common introspection caches in Spring's core, since we - // might not ever need metadata for singleton beans anymore... - resetCommonCaches(); contextRefresh.end(); } } @@ -946,8 +943,10 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader * onRefresh() method and publishing the * {@link org.springframework.context.event.ContextRefreshedEvent}. */ - @SuppressWarnings("deprecation") protected void finishRefresh() { + // Reset common introspection caches in Spring's core infrastructure. + resetCommonCaches(); + // Clear context-level resource caches (such as ASM metadata from scanning). clearResourceCaches(); @@ -968,6 +967,9 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader */ protected void cancelRefresh(BeansException ex) { this.active.set(false); + + // Reset common introspection caches in Spring's core infrastructure. + resetCommonCaches(); } /**