|
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