我很高兴地宣布,Spring for GraphQL 1.2的候选版本现在已经可以通过https://repo.spring.io/milestone。
Querydsl的分页和Query By Example
M1版本为分页和排序提供了抽象和基础架构,包括对注解控制器方法的输入和输出类型的支持,从而最大限度地减少应用程序为支持分页查询所需的工作。
目前的候选版本通过将分页支持扩展到我们的Querydsl和Query By Example DataFetcher实现来完成这一工作,这两个实现现在都暴露了一个可滚动的工厂方法。
此外,Querydsl和Query by Example资源库的自动注册已经被扩展到可以用于返回连接类型的查询。
模式映射检查
M1版本提供了一个非常重要的模式映射检查功能,可以检查所有模式字段是否被DataFetcher注册覆盖,或者是否有匹配的Java对象属性。
在当前的候选版本中,该功能被进一步扩展,以识别返回Connection类型的分页查询,并在其EdgeNode类型中正确嵌套模式类型,以及Java类型的通用参数中,以便正确比较其中的结构。
模式映射检查也已更新,以支持模式接口,并报告任何因Java类型信息不足而未被检查的类型,例如,在控制器方法返回类型中被声明为java.lang.Object的模式联合类型。
如果你还没有试过这个功能,请试一下并向我们提供反馈。
使用Querydsl和Query By Example的单一输入类型
对于具有GraphQL输入类型的单一参数的查询,Querydsl和Query by Example在使用上都有些尴尬,需要一个具有单一参数的人工包装类型,而实际的数据是嵌套在该参数的GraphQL输入类型的结构中。
在当前的候选版本中,Querydsl和Query by Example资源库不再需要这样的包装类型,现在可以直接绑定到反映GraphQL输入类型的对象上。
带有直接字段访问的参数绑定
Spring for GraphQL参数绑定已经支持通过构造函数和属性初始化绑定到更高级别的目标对象,包括具有任何嵌套级别的对象结构。然而,有时属性名称可能会遵循不同的惯例,也许你并不拥有这些对象,也不能改变它们。
在当前的候选版本中,我们增加了一个选项,允许退回到直接的字段访问,这在这种情况下可能有所帮助。
结束语
我们的下一站是5月17日的GA发布,然后是梦幻般的Spring I/O会议,Brian和我将在会上介绍Observing Spring for GraphQL In Action。如果你要去参加会议,请来打个招呼。我们很想和你谈谈!