diff --git a/config/src/main/java/org/springframework/security/config/annotation/AbstractConfiguredSecurityBuilder.java b/config/src/main/java/org/springframework/security/config/annotation/AbstractConfiguredSecurityBuilder.java index 2fd72457c2..29b4e7be14 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/AbstractConfiguredSecurityBuilder.java +++ b/config/src/main/java/org/springframework/security/config/annotation/AbstractConfiguredSecurityBuilder.java @@ -60,7 +60,7 @@ public abstract class AbstractConfiguredSecurityBuilder>, List>> configurers = new LinkedHashMap<>(); - private final List> configurersAddedInInitializing = new ArrayList<>(); + private List> configurersAddedInInitializing = new ArrayList<>(); private final Map, Object> sharedObjects = new HashMap<>(); @@ -388,7 +388,9 @@ public abstract class AbstractConfiguredSecurityBuilder configurer : getConfigurersInInitializing()) { + List> toInit = this.configurersAddedInInitializing; + this.configurersAddedInInitializing = new ArrayList<>(); + for (SecurityConfigurer configurer : toInit) { configurer.init((B) this); } } @@ -410,12 +412,6 @@ public abstract class AbstractConfiguredSecurityBuilder> getConfigurersInInitializing() { - List> result = new ArrayList<>(this.configurersAddedInInitializing); - this.configurersAddedInInitializing.clear(); - return result; - } - /** * Determines if the object is unbuilt. * @return true, if unbuilt else false