Auto-configure ConversionService for GraphQL
Prior to this commit, we would configure a default conversion service for GraphQL annotated controllers, without registering any additional formatters. This commit aligns the GraphQL auto-configuration with MVC and WebFlux, since we now use the `ApplicationConversionService` to register all application formatters for the GraphQL infrastructure. Closes gh-29638
This commit is contained in:
parent
ef4add27f0
commit
bf79d6baef
|
|
@ -30,12 +30,14 @@ import graphql.schema.visibility.NoIntrospectionGraphqlFieldVisibility;
|
|||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.factory.ListableBeanFactory;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.convert.ApplicationConversionService;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
||||
|
|
@ -63,6 +65,12 @@ public class GraphQlAutoConfiguration {
|
|||
|
||||
private static final Log logger = LogFactory.getLog(GraphQlAutoConfiguration.class);
|
||||
|
||||
private final ListableBeanFactory beanFactory;
|
||||
|
||||
public GraphQlAutoConfiguration(ListableBeanFactory beanFactory) {
|
||||
this.beanFactory = beanFactory;
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public GraphQlSource graphQlSource(ResourcePatternResolver resourcePatternResolver, GraphQlProperties properties,
|
||||
|
|
@ -129,7 +137,10 @@ public class GraphQlAutoConfiguration {
|
|||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public AnnotatedControllerConfigurer annotatedControllerConfigurer() {
|
||||
return new AnnotatedControllerConfigurer();
|
||||
AnnotatedControllerConfigurer controllerConfigurer = new AnnotatedControllerConfigurer();
|
||||
controllerConfigurer
|
||||
.addFormatterRegistrar((registry) -> ApplicationConversionService.addBeans(registry, this.beanFactory));
|
||||
return controllerConfigurer;
|
||||
}
|
||||
|
||||
private <T> List<T> toList(ObjectProvider<T> provider) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue