Implements a reactive GraphQL server using Spring WebFlux, enabling highly scalable endpoint queries.
Key Points
Reactive Execution: Non-blocking data fetchers.
Scalable: Ideal for high-concurrency scenarios.
Performance: Handles thousands of concurrent requests with minimal overhead.
Memory Efficient: Reduces memory footprint through backpressure handling.
The spring-boot-starter-graphql is a starter dependency for Spring Boot applications that allows them to integrate with GraphQL APIs. It provides a set of tools and libraries that enable developers to easily build GraphQL-based applications and expose them through a GraphQL endpoint. The starter includes support for GraphQL queries, mutations, subscriptions, and schema definitions, as well as integration with Spring Boot's autoconfiguration and dependency injection features.
You can run TestApplication.java from your IDE directly. You can also run the application using Maven as follows:
Useful Links
Swagger UI: http://localhost:8080/swagger-ui.html
Actuator Endpoint: http://localhost:8080/actuator
GraphIQL: http://localhost:8080/graphiql
About Graph QL
GraphQL provides three main concepts:
Queries: Read data from the server
Mutations: Update data on the server
Subscriptions: Read data over a period of time (e.g., stock market updates, inflight recorder)
How to fetch data using URL
There are two types of annotations that can be used expose API
@SchemaMapping(typeName = "Query", field = "customers") , Here typeName should be matching the schema declared in schema.graphqls and filed should match the definition
@QueryMapping , Short hand for @SchemaMapping where field if not specified will be obtained from methodname and it should be declared in schema.graphqls