When configuring management.metrics.distribution.slo in a native application, the ServiceLevelObjectiveBoundary#valueOf(String) factory method is not registered for reflection, resulting in a runtime error:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'management.metrics.distribution.slo[http.server.requests]' to org.springframework.boot.actuate.autoconfigure.metrics.ServiceLevelObjectiveBoundary[]:

    Property: management.metrics.distribution.slo[http.server.requests]
    Value: "100ms, 200ms, 500ms, 1000ms"
    Origin: class path resource [application.yml] - 15:35
    Reason: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [org.springframework.boot.actuate.autoconfigure.metrics.ServiceLevelObjectiveBoundary[]]

Action:

Update your application's configuration

To reproduce, create a sample application with web, actuator and graalvm support and application.yml:

management:
  endpoints:
    web:
      exposure:
        include: health,metrics
  metrics:
    distribution:
      slo:
        '[http.server.requests]': 100ms, 200ms, 500ms, 1000ms