我尝试在Sping Boot 3.0.0中使用两个依赖项
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>15.0.0</version>
</dependency>
问题是它们都有一个名为“objectMapperProvider”的Bean。
一种用于:
[org/springdoc/core/configuration/SpringDocConfiguration.class]
另一种用于:
[graphql/kickstart/autoconfigure/web/servlet/GraphQLWebAutoConfiguration.class]
我得到的错误是:
The bean 'objectMapperProvider', defined in class path resource [org/springdoc/core/configuration/SpringDocConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [graphql/kickstart/autoconfigure/web/servlet/GraphQLWebAutoConfiguration.class] and overriding is disabled.
有没有办法解决这个问题,或者我需要优先考虑并选择更重要的东西来使用。找到另一个解决方案。
1条答案
按热度按时间nwnhqdif1#
这不是对我的问题的回答,而是对我的问题的解决。
使用新的spring-boot-starter-graphql(通过spring!!)代替
java-kickstarters图形库-Spring引导启动程序!
记录于:
https://docs.spring.io/spring-graphql/docs/current/reference/html/#overview
下面通过示例进行详细说明:
https://www.baeldung.com/spring-graphql
https://blog.devgenius.io/graphql-with-spring-boot-starter-graphql-7b406998c0b5
两个例子都遗漏了一个很小但很重要的东西,那就是控制器中的方法名需要与模式中的方法名完全匹配!!
之前可以在模式中使用方法名,如“books”,然后将其与解析器中前缀为“get”的方法匹配。现在必须完全匹配!!或者您需要在@QueryMapping注解中指定名称,如下所示。
如果模式和相应的方法不匹配,您将不会得到异常,您将只得到空值,即使您将日志设置为跟踪,您也不会发现任何错误!