A schema-first library for building GraphQL-Java schemas using the GraphQL schema language with automatic type mapping.
GraphQL Java Tools is a schema-first library for the JVM that allows developers to build GraphQL schemas using the GraphQL Schema Definition Language and automatically map them to existing Java or Kotlin domain objects. It solves the problem of excessive boilerplate and manual wiring when using the graphql-java library directly by generating DataFetchers and performing type discovery.
Java and Kotlin developers building GraphQL APIs who want to use a schema-first approach and integrate with existing domain models, especially those using frameworks like Spring.
Developers choose GraphQL Java Tools for its ability to drastically reduce boilerplate, automatically generate DataFetchers, and seamlessly map GraphQL types to Java classes, all while maintaining a clean separation between schema and implementation for better testability.
A schema-first tool for graphql-java inspired by graphql-tools for JS
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables writing GraphQL schemas in portable SDL instead of verbose Java builders, promoting a clean separation between schema definition and implementation as emphasized in the README.
Generates data fetchers that call appropriate methods on Java classes based on schema fields, drastically reducing manual wiring compared to raw graphql-java.
Supports stateful resolvers that can carry state, making integration with Spring and other IOC containers straightforward, as highlighted in the 'Why GraphQL Java Tools?' section.
Provides warnings for unused classes and errors for incorrect Java class usage during schema building, ensuring consistency between GraphQL types and Java objects.
Requires explicit Kotlin version configuration in build files even for pure Java projects, adding setup complexity as shown in the Quick Start section.
May not easily support advanced GraphQL features like custom directives or complex subscriptions out-of-the-box, often requiring manual overrides or workarounds.
The abstraction layer for automatic mapping and schema parsing can introduce runtime overhead compared to hand-optimized native graphql-java implementations.