Refine the validator memory optimization so that only directly created
validators are nulled out. Also update the logic to ensure that
`destroy` is also called.
See gh-4734
@ -90,9 +90,9 @@ public class ConfigurationPropertiesBindingPostProcessor
@@ -90,9 +90,9 @@ public class ConfigurationPropertiesBindingPostProcessor
privatePropertySourcespropertySources;
privatevolatileValidatorvalidator;
privateValidatorvalidator;
privatebooleanownedValidator=false;
privatevolatileValidatorlocalValidator;
privateConversionServiceconversionService;
@ -195,7 +195,9 @@ public class ConfigurationPropertiesBindingPostProcessor
@@ -195,7 +195,9 @@ public class ConfigurationPropertiesBindingPostProcessor
@ -205,36 +207,24 @@ public class ConfigurationPropertiesBindingPostProcessor
@@ -205,36 +207,24 @@ public class ConfigurationPropertiesBindingPostProcessor
@ -244,13 +234,11 @@ public class ConfigurationPropertiesBindingPostProcessor
@@ -244,13 +234,11 @@ public class ConfigurationPropertiesBindingPostProcessor
// Flatten the sources into a single list so they can be iterated
// empty, so not very useful, but fulfils the contract
returnnewMutablePropertySources();
}
@ -353,16 +341,36 @@ public class ConfigurationPropertiesBindingPostProcessor
@@ -353,16 +341,36 @@ public class ConfigurationPropertiesBindingPostProcessor
@ -408,7 +416,7 @@ public class ConfigurationPropertiesBindingPostProcessor
@@ -408,7 +416,7 @@ public class ConfigurationPropertiesBindingPostProcessor