documentation: Document the compatibility between DGS and the different versions of Spring Boot
What are you missing in the docs
A compatibility matrix/list/blurb that describes that DGS is compatible with Spring Boot 2.3, 2.4, and 2.5. It should also point to our examples that run 2.4 but probably should be upgraded to 2.5.
@berngp Could you point me to the examples that run spring 2.4?
In my project, I'm using:
Spring-boot: 2.4.12 graphql-dgs-client: 4.9.10
and running into some issues while using WebClientGraphQLClient.
java.lang.IllegalStateException: Failed to introspect Class [<MY class that uses MonoGraphQLClient.createWithWebClient(webClient)>] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@9e89d68]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.12.jar:5.3.12]
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:358) ~[spring-core-5.3.12.jar:5.3.12]
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:414) ~[spring-core-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$2(AbstractAutowireCapableBeanFactory.java:765) ~[spring-beans-5.3.12.jar:5.3.12]
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705) ~[?:?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:764) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:703) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:674) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1670) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:570) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:542) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:667) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:659) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1300) ~[spring-context-5.3.12.jar:5.3.12]
at org.springframework.boot.SpringApplication.getExitCodeFromMappedException(SpringApplication.java:903) ~[spring-boot-2.4.12.jar:2.4.12]
at org.springframework.boot.SpringApplication.getExitCodeFromException(SpringApplication.java:891) ~[spring-boot-2.4.12.jar:2.4.12]
at org.springframework.boot.SpringApplication.handleExitCode(SpringApplication.java:878) ~[spring-boot-2.4.12.jar:2.4.12]
at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:819) [spring-boot-2.4.12.jar:2.4.12]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:349) [spring-boot-2.4.12.jar:2.4.12]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) [spring-boot-2.4.12.jar:2.4.12]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318) [spring-boot-2.4.12.jar:2.4.12]
at com.intuit.identity.manage.camsapp.CamsApplicationKt.main(CamsApplication.kt:18) [classes/:?]
at com.intuit.identity.manage.camsapp.CamsApplicationKt.main(CamsApplication.kt) [classes/:?]
Caused by: java.lang.NoClassDefFoundError: com/netflix/graphql/dgs/client/WebClientGraphQLClient
at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
at java.lang.Class.privateGetDeclaredMethods(Class.java:3166) ~[?:?]
at java.lang.Class.getDeclaredMethods(Class.java:2309) ~[?:?]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.12.jar:5.3.12]
... 22 more
Caused by: java.lang.ClassNotFoundException: com.netflix.graphql.dgs.client.WebClientGraphQLClient
at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[?:?]
at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
at java.lang.Class.privateGetDeclaredMethods(Class.java:3166) ~[?:?]
at java.lang.Class.getDeclaredMethods(Class.java:2309) ~[?:?]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.12.jar:5.3.12]
... 22 more
@rachanamamillapalli This is unrelated to Spring. The error shows java.lang.ClassNotFoundException: com.netflix.graphql.dgs.client.WebClientGraphQLClient, so you're likely just missing the dgs-client dependency on your (runtime) classpath.
@berngp @paulbakker Can contributors help confirm which Spring Boot version is support with the latest versions of DGS?
Is Spring Boot 2.4 compatible? What about 2.6.x?
In general we expect to be compatible with 2.3 and later versions. Internally we use 2.3 and 2.5, we don't test against 2.6.x but we don't expect it to be incompatible.