升级graphql-spqr API时groovy.lang.MetaClass报TypeMappingException
解决Spring Boot 3.3.2 + graphql-spqr 1.0.1中Groovy metaClass属性的类型映射错误
升级后触发的TypeMappingException,是因为graphql-spqr 1.0.1对类型扫描的严格性提升,自动检测到Groovy对象内置的metaClass属性,而其中的getTheClass方法因泛型参数缺失无法完成GraphQL类型映射。无需修改现有控制器代码,只需通过配置让graphql-spqr忽略相关类型即可解决问题。
解决方案:添加全局类型忽略配置
创建Spring配置类,通过SchemaGeneratorConfigurer配置Schema生成器,直接忽略groovy.lang.MetaClass类型:
@Configuration class GraphQLConfig { @Bean SchemaGeneratorConfigurer schemaGeneratorConfigurer() { return builder -> builder.withIgnoredTypes(MetaClass.class); } }
可选:针对性排除特定方法
如果不想全局忽略整个MetaClass类型,也可以仅排除引发错误的getTheClass方法:
@Configuration class GraphQLConfig implements SchemaGeneratorConfigurer { @Override void configure(SchemaGeneratorBuilder builder) { builder.withOperationsTransformer((operations, buildContext) -> { operations.removeIf(op -> op.definingType == MetaClass && op.name.equals("getTheClass") ); return operations; }); } }
两种配置都能解决启动报错问题,全局忽略的方式更简洁高效。
内容的提问来源于stack exchange,提问作者Chic
相关产品推荐
相关产品推荐

