diff --git a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/ActuatorProvider.java b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/ActuatorProvider.java index 1a006aaab..98ac57385 100644 --- a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/ActuatorProvider.java +++ b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/ActuatorProvider.java @@ -35,6 +35,7 @@ import org.springdoc.core.properties.SpringDocConfigProperties; import org.springdoc.core.utils.Constants; +import org.springframework.beans.BeansException; import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties; import org.springframework.boot.autoconfigure.web.ServerProperties; @@ -42,6 +43,7 @@ import org.springframework.boot.web.context.WebServerInitializedEvent; import org.springframework.boot.web.server.WebServer; import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationListener; import org.springframework.util.AntPathMatcher; import org.springframework.web.method.HandlerMethod; @@ -54,7 +56,7 @@ * * @author bnasslahsen */ -public abstract class ActuatorProvider implements ApplicationListener { +public abstract class ActuatorProvider implements ApplicationListener, ApplicationContextAware { /** * The Management server properties. @@ -91,6 +93,11 @@ public abstract class ActuatorProvider implements ApplicationListener managementServerProperties, - Optional webEndpointProperties, - Optional webFluxEndpointHandlerMapping, - Optional controllerEndpointHandlerMapping) { + Optional webEndpointProperties) { return new ActuatorWebFluxProvider(serverProperties, springDocConfigProperties, managementServerProperties, - webEndpointProperties, - webFluxEndpointHandlerMapping, - controllerEndpointHandlerMapping); + webEndpointProperties); } /** diff --git a/springdoc-openapi-starter-webflux-api/src/main/java/org/springdoc/webflux/core/providers/ActuatorWebFluxProvider.java b/springdoc-openapi-starter-webflux-api/src/main/java/org/springdoc/webflux/core/providers/ActuatorWebFluxProvider.java index 975d5dbf7..786594527 100644 --- a/springdoc-openapi-starter-webflux-api/src/main/java/org/springdoc/webflux/core/providers/ActuatorWebFluxProvider.java +++ b/springdoc-openapi-starter-webflux-api/src/main/java/org/springdoc/webflux/core/providers/ActuatorWebFluxProvider.java @@ -38,6 +38,7 @@ import org.springframework.boot.actuate.endpoint.web.reactive.ControllerEndpointHandlerMapping; import org.springframework.boot.actuate.endpoint.web.reactive.WebFluxEndpointHandlerMapping; import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.context.ApplicationContextAware; import org.springframework.web.method.HandlerMethod; import org.springframework.web.reactive.result.method.RequestMappingInfo; @@ -47,18 +48,9 @@ * * @author bnasslahsen */ -public class ActuatorWebFluxProvider extends ActuatorProvider { - - /** - * The Web flux endpoint handler mapping. - */ - private WebFluxEndpointHandlerMapping webFluxEndpointHandlerMapping; - - /** - * The Controller endpoint handler mapping. - */ - private ControllerEndpointHandlerMapping controllerEndpointHandlerMapping; +public class ActuatorWebFluxProvider extends ActuatorProvider implements ApplicationContextAware { + /** * Instantiates a new Actuator web flux provider. * @@ -66,27 +58,23 @@ public class ActuatorWebFluxProvider extends ActuatorProvider { * @param springDocConfigProperties the spring doc config properties * @param managementServerProperties the management server properties * @param webEndpointProperties the web endpoint properties - * @param webFluxEndpointHandlerMapping the web flux endpoint handler mapping - * @param controllerEndpointHandlerMapping the controller endpoint handler mapping */ public ActuatorWebFluxProvider(ServerProperties serverProperties, SpringDocConfigProperties springDocConfigProperties, Optional managementServerProperties, - Optional webEndpointProperties, - Optional webFluxEndpointHandlerMapping, - Optional controllerEndpointHandlerMapping) { + Optional webEndpointProperties) { super(managementServerProperties, webEndpointProperties, serverProperties, springDocConfigProperties); - webFluxEndpointHandlerMapping.ifPresent(webFluxEndpointHandlerMapping1 -> this.webFluxEndpointHandlerMapping = webFluxEndpointHandlerMapping1); - controllerEndpointHandlerMapping.ifPresent(controllerEndpointHandlerMapping1 -> this.controllerEndpointHandlerMapping = controllerEndpointHandlerMapping1); } - + public Map getMethods() { Map mappingInfoHandlerMethodMap = new HashMap<>(); + WebFluxEndpointHandlerMapping webFluxEndpointHandlerMapping = applicationContext.getBeansOfType(WebFluxEndpointHandlerMapping.class).values().stream().findFirst().orElse(null); if (webFluxEndpointHandlerMapping == null) webFluxEndpointHandlerMapping = managementApplicationContext.getBean(WebFluxEndpointHandlerMapping.class); mappingInfoHandlerMethodMap.putAll(webFluxEndpointHandlerMapping.getHandlerMethods()); + ControllerEndpointHandlerMapping controllerEndpointHandlerMapping = applicationContext.getBeansOfType(ControllerEndpointHandlerMapping.class).values().stream().findFirst().orElse(null); if (controllerEndpointHandlerMapping == null) controllerEndpointHandlerMapping = managementApplicationContext.getBean(ControllerEndpointHandlerMapping.class); mappingInfoHandlerMethodMap.putAll(controllerEndpointHandlerMapping.getHandlerMethods()); diff --git a/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.java b/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.java index 98e41d328..bafc6ebb3 100644 --- a/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.java +++ b/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/configuration/SpringDocWebMvcConfiguration.java @@ -56,7 +56,6 @@ import org.springframework.boot.actuate.autoconfigure.web.server.ConditionalOnManagementPort; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties; -import org.springframework.boot.actuate.endpoint.web.servlet.ControllerEndpointHandlerMapping; import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -198,8 +197,6 @@ static class SpringDocWebMvcActuatorConfiguration { * @param springDocConfigProperties the spring doc config properties * @param managementServerProperties the management server properties * @param webEndpointProperties the web endpoint properties - * @param webMvcEndpointHandlerMapping the web mvc endpoint handler mapping - * @param controllerEndpointHandlerMapping the controller endpoint handler mapping * @return the actuator provider */ @Bean @@ -209,15 +206,11 @@ static class SpringDocWebMvcActuatorConfiguration { ActuatorProvider actuatorProvider(ServerProperties serverProperties, SpringDocConfigProperties springDocConfigProperties, Optional managementServerProperties, - Optional webEndpointProperties, - Optional webMvcEndpointHandlerMapping, - Optional controllerEndpointHandlerMapping) { + Optional webEndpointProperties) { return new ActuatorWebMvcProvider(serverProperties, springDocConfigProperties, managementServerProperties, - webEndpointProperties, - webMvcEndpointHandlerMapping, - controllerEndpointHandlerMapping); + webEndpointProperties); } /** diff --git a/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/providers/ActuatorWebMvcProvider.java b/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/providers/ActuatorWebMvcProvider.java index 7ac56543b..58345a83d 100644 --- a/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/providers/ActuatorWebMvcProvider.java +++ b/springdoc-openapi-starter-webmvc-api/src/main/java/org/springdoc/webmvc/core/providers/ActuatorWebMvcProvider.java @@ -51,45 +51,31 @@ */ public class ActuatorWebMvcProvider extends ActuatorProvider { - /** - * The Web mvc endpoint handler mapping. - */ - private WebMvcEndpointHandlerMapping webMvcEndpointHandlerMapping; - - /** - * The Controller endpoint handler mapping. - */ - private ControllerEndpointHandlerMapping controllerEndpointHandlerMapping; - /** * Instantiates a new Actuator web mvc provider. * - * @param serverProperties the server properties - * @param springDocConfigProperties the spring doc config properties - * @param managementServerProperties the management server properties - * @param webEndpointProperties the web endpoint properties - * @param webMvcEndpointHandlerMapping the web mvc endpoint handler mapping - * @param controllerEndpointHandlerMapping the controller endpoint handler mapping + * @param serverProperties the server properties + * @param springDocConfigProperties the spring doc config properties + * @param managementServerProperties the management server properties + * @param webEndpointProperties the web endpoint properties */ public ActuatorWebMvcProvider(ServerProperties serverProperties, SpringDocConfigProperties springDocConfigProperties, Optional managementServerProperties, - Optional webEndpointProperties, - Optional webMvcEndpointHandlerMapping, - Optional controllerEndpointHandlerMapping) { + Optional webEndpointProperties) { super(managementServerProperties, webEndpointProperties, serverProperties, springDocConfigProperties); - webMvcEndpointHandlerMapping.ifPresent(webMvcEndpointHandlerMapping1 -> this.webMvcEndpointHandlerMapping = webMvcEndpointHandlerMapping1); - controllerEndpointHandlerMapping.ifPresent(controllerEndpointHandlerMapping1 -> this.controllerEndpointHandlerMapping = controllerEndpointHandlerMapping1); } @Override public Map getMethods() { Map mappingInfoHandlerMethodMap = new HashMap<>(); + WebMvcEndpointHandlerMapping webMvcEndpointHandlerMapping = applicationContext.getBeansOfType(WebMvcEndpointHandlerMapping.class).values().stream().findFirst().orElse(null); if (webMvcEndpointHandlerMapping == null) webMvcEndpointHandlerMapping = managementApplicationContext.getBean(WebMvcEndpointHandlerMapping.class); mappingInfoHandlerMethodMap.putAll(webMvcEndpointHandlerMapping.getHandlerMethods()); + ControllerEndpointHandlerMapping controllerEndpointHandlerMapping = applicationContext.getBeansOfType(ControllerEndpointHandlerMapping.class).values().stream().findFirst().orElse(null); if (controllerEndpointHandlerMapping == null) controllerEndpointHandlerMapping = managementApplicationContext.getBean(ControllerEndpointHandlerMapping.class); mappingInfoHandlerMethodMap.putAll(controllerEndpointHandlerMapping.getHandlerMethods()); @@ -102,4 +88,4 @@ public String getContextPath() { return StringUtils.defaultIfEmpty(serverProperties.getServlet().getContextPath(), EMPTY); } -} +} \ No newline at end of file