leangen / graphql-spqr

Build a GraphQL service in seconds
Apache License 2.0
1.09k stars 179 forks source link

Compile parameters to support Spring Boot 3.2.1 (Spring Framework 6.1) #484

Closed tdsproule closed 6 months ago

tdsproule commented 6 months ago

Running latest SPQR (0.12.3) with Spring Boot 3.2.1 application - and any query or mutation request results in Spring exception:

2023-12-28T23:57:56.553Z ERROR 55380 --- [game-tracker] [nio-4000-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: Cannot resolve parameter names for constructor public io.leangen.graphql.spqr.spring.web.dto.GraphQLRequest(java.lang.String,java.lang.String,java.lang.String,java.util.Map)] with root cause

java.lang.IllegalStateException: Cannot resolve parameter names for constructor public io.leangen.graphql.spqr.spring.web.dto.GraphQLRequest(java.lang.String,java.lang.String,java.lang.String,java.util.Map) at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-6.1.2.jar:6.1.2] at org.springframework.beans.BeanUtils.getParameterNames(BeanUtils.java:641) ~[spring-beans-6.1.2.jar:6.1.2] at org.springframework.validation.DataBinder.createObject(DataBinder.java:932) ~[spring-context-6.1.2.jar:6.1.2] at org.springframework.validation.DataBinder.construct(DataBinder.java:903) ~[spring-context-6.1.2.jar:6.1.2] at org.springframework.web.bind.ServletRequestDataBinder.construct(ServletRequestDataBinder.java:116) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.constructAttribute(ServletModelAttributeMethodProcessor.java:156) ~[spring-webmvc-6.1.2.jar:6.1.2]

I'm think it is because the SPQR libraries are not compiled with '-parameters' option which is now required for Spring Boot 3.2.1 (Spring framework 6.1) as described here: https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x#parameter-name-retention

Request is to upgrade libraries to include compiled parameter information required by Spring.

tdsproule commented 6 months ago

Issue is for Spring starter - and is a duplicate of https://github.com/leangen/graphql-spqr-spring-boot-starter/issues/140