After upgrading to SB 3.5.0, and using org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.8 (latest), a method rename is causing method not found at start-up:
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.springdoc.core.providers.HateoasHalProvider.isHalEnabled(HateoasHalProvider.java:81)
The following method did not exist:
'boolean org.springframework.boot.autoconfigure.hateoas.HateoasProperties.getUseHalAsDefaultJsonMediaType()'
The calling method's class, org.springdoc.core.providers.HateoasHalProvider, was loaded from the following location:
jar:file:/Users/silviu.burcea/.m2/repository/org/springdoc/springdoc-openapi-starter-common/2.8.8/springdoc-openapi-starter-common-2.8.8.jar!/org/springdoc/core/providers/HateoasHalProvider.class
The called method's class, org.springframework.boot.autoconfigure.hateoas.HateoasProperties, is available from the following locations:
jar:file:/Users/silviu.burcea/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.5.0/spring-boot-autoconfigure-3.5.0.jar!/org/springframework/boot/autoconfigure/hateoas/HateoasProperties.class
The called method's class hierarchy was loaded from the following locations:
org.springframework.boot.autoconfigure.hateoas.HateoasProperties: file:/Users/silviu.burcea/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.5.0/spring-boot-autoconfigure-3.5.0.jar
This must either be reverted or at least mentioned in 3.5.0 release notes. I have reported it to springdoc team, for their awareness: https://github.com/springdoc/springdoc-openapi/issues/3005
I'm happy to contribute once it's clear which project needs to change.
Offending commit, for context: https://github.com/spring-projects/spring-boot/commit/964abef6b35706df1e3567a9d753c13729eb19b7
Comment From: wilkinsona
Thanks for the report.
This wasn't mentioned in the release notes as we don't consider the getters and setters of @ConfigurationProperties
to be public API. This is mentioned in the reference documentation:
The properties that map to @ConfigurationProperties classes available in Spring Boot, which are configured through properties files, YAML files, environment variables, and other mechanisms, are public API but the accessors (getters/setters) of the class itself are not meant to be used directly.
We'll discuss this to see if we want to make an exception in this case.
Comment From: philwebb
I'm not keen to change these back again, I think the change generally improves our code. I think springdoc-openapi-starter-webmvc should be able to adapt to our change and use reflection if they need to support older versions.