From 7cb6ac0a026c2a5cdf9c7990219c1bc683b75b97 Mon Sep 17 00:00:00 2001 From: "evgeny.bovykin" Date: Mon, 9 May 2022 21:39:05 +0200 Subject: [PATCH] Make inner classes static when feasible (on main) A static nested class does not keep an implicit reference to its enclosing instance. This prevents a common cause of memory leaks and uses less memory per instance of the class. Closes gh-28433 --- .../AutowiredAnnotationBeanPostProcessor.java | 2 +- .../BeanDefinitionPropertyValueCodeGenerator.java | 12 ++++++------ .../annotation/ConfigurationClassPostProcessor.java | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index 770a447aefb..6407e3bd8d1 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -654,7 +654,7 @@ public class AutowiredAnnotationBeanPostProcessor implements SmartInstantiationA /** * Base class representing injection information. */ - private abstract class AutowiredElement extends InjectionMetadata.InjectedElement { + private abstract static class AutowiredElement extends InjectionMetadata.InjectedElement { protected final boolean required; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java index b8ea68b23c4..c87bfce918e 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java @@ -119,7 +119,7 @@ class BeanDefinitionPropertyValueCodeGenerator { /** * {@link Delegate} for {@code primitive} types. */ - private class PrimitiveDelegate implements Delegate { + private static class PrimitiveDelegate implements Delegate { private static final Map CHAR_ESCAPES; @@ -177,7 +177,7 @@ class BeanDefinitionPropertyValueCodeGenerator { /** * {@link Delegate} for {@link String} types. */ - private class StringDelegate implements Delegate { + private static class StringDelegate implements Delegate { @Override @Nullable @@ -194,7 +194,7 @@ class BeanDefinitionPropertyValueCodeGenerator { /** * {@link Delegate} for {@link Enum} types. */ - private class EnumDelegate implements Delegate { + private static class EnumDelegate implements Delegate { @Override @Nullable @@ -212,7 +212,7 @@ class BeanDefinitionPropertyValueCodeGenerator { /** * {@link Delegate} for {@link Class} types. */ - private class ClassDelegate implements Delegate { + private static class ClassDelegate implements Delegate { @Override @Nullable @@ -229,7 +229,7 @@ class BeanDefinitionPropertyValueCodeGenerator { /** * {@link Delegate} for {@link ResolvableType} types. */ - private class ResolvableTypeDelegate implements Delegate { + private static class ResolvableTypeDelegate implements Delegate { @Override @Nullable @@ -512,7 +512,7 @@ class BeanDefinitionPropertyValueCodeGenerator { /** * {@link Delegate} for {@link BeanReference} types. */ - private class BeanReferenceDelegate implements Delegate { + private static class BeanReferenceDelegate implements Delegate { @Override @Nullable diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java index e883195a886..aa8b9e51c80 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java @@ -509,7 +509,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo } - private class AotContribution implements BeanFactoryInitializationAotContribution { + private static class AotContribution implements BeanFactoryInitializationAotContribution { private static final String BEAN_FACTORY_VARIABLE = BeanFactoryInitializationCode.BEAN_FACTORY_VARIABLE;