0

I am upgrading spring boot to 2.7.13 & JDK17.

Then I ran into a common problem with Springfox, which I solved using this post. (tl;dr defining WebMvcEndpointHandlerMapping bean)

In my project I'm exposing by health endpoint on 8081.

management.server.port: 8081

Doing this is throwing error:

Parameter 4 of method webEndpointServletHandlerMapping in com.my.application.web.config.WebMvcEndpointConfig required a bean of type 'org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties' that could not be found.

Looks like the custom definition of bean is not handling CORS well for port 8081.

Any suggestions how can this be solved?

Bean definition:

@Bean
    public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier,
                                                                         ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier,
                                                                         EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties,
                                                                         WebEndpointProperties webEndpointProperties, Environment environment) {
        List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
        Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
        allEndpoints.addAll(webEndpoints);
        allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
        allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
        String basePath = webEndpointProperties.getBasePath();
        EndpointMapping endpointMapping = new EndpointMapping(basePath);
        boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment,
                basePath);
        return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes,
                corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath),
                shouldRegisterLinksMapping, null);
    }

    private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment,
                                               String basePath) {

        return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath)
                || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));

    }
reiley
  • 3,759
  • 12
  • 58
  • 114

0 Answers0