Initialize child contexts at creation.

This commit is contained in:
Olga Maciaszek-Sharma
2022-11-30 18:59:49 +01:00
parent ec64c62abb
commit d501773120
2 changed files with 2 additions and 16 deletions

View File

@@ -38,16 +38,14 @@ import org.springframework.lang.Nullable;
*/
public class FeignClientFactory extends NamedContextFactory<FeignClientSpecification> {
private Map<String, ApplicationContextInitializer<GenericApplicationContext>> applicationContextInitializers;
public FeignClientFactory() {
this(new HashMap<>());
}
public FeignClientFactory(
Map<String, ApplicationContextInitializer<GenericApplicationContext>> applicationContextInitializers) {
super(FeignClientsConfiguration.class, "spring.cloud.openfeign", "spring.cloud.openfeign.client.name");
this.applicationContextInitializers = applicationContextInitializers;
super(FeignClientsConfiguration.class, "spring.cloud.openfeign", "spring.cloud.openfeign.client.name",
applicationContextInitializers);
}
@Nullable
@@ -79,15 +77,4 @@ public class FeignClientFactory extends NamedContextFactory<FeignClientSpecifica
return new FeignClientFactory(convertedInitializers);
}
public void initializeChildContexts() {
applicationContextInitializers.keySet().forEach(contextId -> {
GenericApplicationContext childContext = buildContext(contextId);
applicationContextInitializers.get(contextId).initialize(childContext);
addContext(contextId, childContext);
childContext.refresh();
});
// Ensure the contexts are only initialized once after Aot processing
applicationContextInitializers = new HashMap<>();
}
}

View File

@@ -420,7 +420,6 @@ public class FeignClientFactoryBean
<T> T getTarget() {
FeignClientFactory feignClientFactory = beanFactory != null ? beanFactory.getBean(FeignClientFactory.class)
: applicationContext.getBean(FeignClientFactory.class);
feignClientFactory.initializeChildContexts();
Feign.Builder builder = feign(feignClientFactory);
if (!StringUtils.hasText(url) && !isUrlAvailableInConfig(contextId)) {