|
22 | 22 | import java.util.LinkedHashSet; |
23 | 23 | import java.util.List; |
24 | 24 | import java.util.Set; |
| 25 | +import java.util.function.Supplier; |
25 | 26 |
|
26 | 27 | import org.apache.commons.logging.Log; |
27 | 28 |
|
28 | 29 | import org.springframework.boot.BootstrapRegistry.InstanceSupplier; |
| 30 | +import org.springframework.boot.BootstrapRegistry.Scope; |
29 | 31 | import org.springframework.boot.ConfigurableBootstrapContext; |
30 | 32 | import org.springframework.boot.DefaultPropertiesPropertySource; |
31 | 33 | import org.springframework.boot.context.config.ConfigDataEnvironmentContributors.BinderOption; |
@@ -220,18 +222,21 @@ private ConfigDataEnvironmentContributor createInitialImportContributor(ConfigDa |
220 | 222 | void processAndApply() { |
221 | 223 | ConfigDataImporter importer = new ConfigDataImporter(this.logFactory, this.notFoundAction, this.resolvers, |
222 | 224 | this.loaders); |
223 | | - this.bootstrapContext.register(Binder.class, InstanceSupplier |
224 | | - .from(() -> this.contributors.getBinder(null, BinderOption.FAIL_ON_BIND_TO_INACTIVE_SOURCE))); |
| 225 | + registerBootstrapBinder(() -> this.contributors.getBinder(null, BinderOption.FAIL_ON_BIND_TO_INACTIVE_SOURCE)); |
225 | 226 | ConfigDataEnvironmentContributors contributors = processInitial(this.contributors, importer); |
226 | 227 | Binder initialBinder = contributors.getBinder(null, BinderOption.FAIL_ON_BIND_TO_INACTIVE_SOURCE); |
227 | | - this.bootstrapContext.register(Binder.class, InstanceSupplier.of(initialBinder)); |
| 228 | + registerBootstrapBinder(() -> initialBinder); |
228 | 229 | ConfigDataActivationContext activationContext = createActivationContext(initialBinder); |
229 | 230 | contributors = processWithoutProfiles(contributors, importer, activationContext); |
230 | 231 | activationContext = withProfiles(contributors, activationContext); |
231 | 232 | contributors = processWithProfiles(contributors, importer, activationContext); |
232 | 233 | applyToEnvironment(contributors, activationContext); |
233 | 234 | } |
234 | 235 |
|
| 236 | + private void registerBootstrapBinder(Supplier<Binder> supplier) { |
| 237 | + this.bootstrapContext.register(Binder.class, InstanceSupplier.from(supplier).withScope(Scope.PROTOTYPE)); |
| 238 | + } |
| 239 | + |
235 | 240 | private ConfigDataEnvironmentContributors processInitial(ConfigDataEnvironmentContributors contributors, |
236 | 241 | ConfigDataImporter importer) { |
237 | 242 | this.logger.trace("Processing initial config data environment contributors without activation context"); |
|
0 commit comments