We ran into an issue where @SpringQueryMap was not working in one of our apps. I created a dummy app to try and diagnose the issue, but it wasn't until I stumbled across this bug that I identified the problem. Unlike the other bug, it was spring-boot-starter-data-mongodb in our case. Below is some sample code. Without spring-boot-starter-data-mongodb, it works fine. Add spring-boot-starter-data-mongodb and the querystring no longer gets sent.

@FeignClient(name = "scratch-service", url = "http://localhost:8091")
public interface ScratchClient
{
    @Builder
    record Test(String foo)
    {
    }

    @GetMapping("/test")
    void test(@SpringQueryMap final Test test);
}
@RequiredArgsConstructor
@Slf4j
@RestController
public class ScratchController
{
    private final ScratchClient scratchClient;

    @GetMapping("/test")
    public void test(final ScratchClient.Test test)
    {
        log.info("test: {}", test);
    }

    @GetMapping("/feign")
    public void feign()
    {
        scratchClient.test(ScratchClient.Test.builder().foo("foo").build());
    }
}

with spring-starter-data-mongodb...

http-outgoing-0 >> GET /test HTTP/1.1

without...

http-outgoing-0 >> GET /test?foo=foo HTTP/1.1

This was tested with Spring Boot 3.4.5 and Spring Cloud 2024.0.1

Switching it from a record to a class does not have this compatibility issue.

Comment From: StanMarkov

Any update on this? seeing the same thing.