A previously resolved issue appears to have resurfaced in Spring Boot 3.4.6 and 3.5.0.
When resolving configuration properties, ConfigDataEnvironmentContributorPlaceholdersResolver
invokes String.valueOf()
directly, rather than relying on the registered ConversionService
. This bypasses any custom converters and leads to incorrect behavior for types that depend on specific conversion logic — for example, com.google.protobuf.ByteString
, which should use toStringUtf8()
instead of the default toString()
.
This behavior mirrors the issue originally reported in spring-projects/spring-boot#39944 (originally identified in GoogleCloudPlatform/spring-cloud-gcp#2690), and was previously known to affect Spring Boot versions 2.4.x through 3.2.x.
It is also reported in the spring-cloud-gcp repo under https://github.com/GoogleCloudPlatform/spring-cloud-gcp/issues/3821 for investigation.
Comment From: bclozel
Isn't this rather a Spring Framework bug as raised in https://github.com/spring-projects/spring-framework/pull/34936 ?
Can you reproduce this issue with the latest Framework SNAPSHOTs still?
Comment From: bushwakko
This seems to be fixed here: https://github.com/spring-projects/spring-framework/pull/34936 and going into the 6.2.8 release due June 12th.
Maybe bumping to 6.2.8 should be included in the 3.5.1 milestone? https://github.com/spring-projects/spring-boot/milestone/389
Comment From: bclozel
@bushwakko I'm waiting for @adnan-selimovic 's feedback before considering this as a duplicate.
Maybe bumping to 6.2.8 should be included in the 3.5.1 milestone?
We'll create the issue with a semi-automated process. We'll upgrade in due time as usual with our release train.
Comment From: kmandeville
Will this be backported and fixed in Spring Boot 3.4.6 and not just 3.5.0?
Comment From: bclozel
See #45768 and #45781 for the Framework upgrades.
Still waiting for @adnan-selimovic feedback. We only have a couple of days before the Framework release.