Only add httpServiceProxyRegistry bean when necessary

Update `AbstractHttpServiceRegistrar` so that the
`httpServiceProxyRegistry` bean  is only added when registrations
are found.
This commit is contained in:
Phillip Webb
2025-08-12 06:31:24 +01:00
committed by rstoyanchev
parent fbe96a8112
commit 169b7015d2
4 changed files with 47 additions and 14 deletions
@@ -147,20 +147,22 @@ public abstract class AbstractHttpServiceRegistrar implements
registerHttpServices(new DefaultGroupRegistry(), metadata);
RootBeanDefinition proxyRegistryBeanDef = createOrGetRegistry(beanRegistry);
if (this.groupsMetadata.hasRegistrations()) {
RootBeanDefinition proxyRegistryBeanDef = createOrGetRegistry(beanRegistry);
mergeGroups(proxyRegistryBeanDef);
mergeGroups(proxyRegistryBeanDef);
this.groupsMetadata.forEachRegistration((groupName, types) -> types.forEach(type -> {
RootBeanDefinition proxyBeanDef = new RootBeanDefinition();
proxyBeanDef.setBeanClassName(type);
proxyBeanDef.setAttribute(HTTP_SERVICE_GROUP_NAME_ATTRIBUTE, groupName);
proxyBeanDef.setInstanceSupplier(() -> getProxyInstance(groupName, type));
String beanName = (groupName + "#" + type);
if (!beanRegistry.containsBeanDefinition(beanName)) {
beanRegistry.registerBeanDefinition(beanName, proxyBeanDef);
}
}));
this.groupsMetadata.forEachRegistration((groupName, types) -> types.forEach(type -> {
RootBeanDefinition proxyBeanDef = new RootBeanDefinition();
proxyBeanDef.setBeanClassName(type);
proxyBeanDef.setAttribute(HTTP_SERVICE_GROUP_NAME_ATTRIBUTE, groupName);
proxyBeanDef.setInstanceSupplier(() -> getProxyInstance(groupName, type));
String beanName = (groupName + "#" + type);
if (!beanRegistry.containsBeanDefinition(beanName)) {
beanRegistry.registerBeanDefinition(beanName, proxyBeanDef);
}
}));
}
}
/**
@@ -97,6 +97,13 @@ final class GroupsMetadata {
return this.groupMap.values().stream();
}
/**
* Return if there are any {@link Registration registrations}.
*/
boolean hasRegistrations() {
return !this.groupMap.isEmpty();
}
/**
* Registration metadata for an {@link HttpServiceGroup}.