Support for BatchHandlerMethodArgumentResolver #8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The purpose of this PR
Replace hard code in
BatchLoaderHandlerMethod
withBatchHandlerMethodArgumentResolver
, and support customBatchHandlerMethodArgumentResolver
.1、Why spring-graphql should support
BatchHandlerMethodArgumentResolver
User will define arguments on field, no matter whether the field is fetched by DataLoader or fetched directly( n+1 way). And user will always want to get additional information about field, such as Directives, FieldDefinition.
In conclusion, we'd better suport pass all the information of
DataFetchingEnvironment
to batch handler method. That saidBatchLoaderHandlerMethod
should support argumentResolve strategies which resolving argument values into various method parameters, and developers could custom theirBatchLoaderHandlerMethod
.2、The way spring-graphql support
BatchHandlerMethodArgumentResolver
Replace
dataLoader.load(env.getSource())
withdataLoader.load(env.getSource(), env)
.Brief change log
BatchLoaderHandlerMethod#resolveArgument
withBatchHandlerMethodArgumentResolver
, and support customBatchLoaderHandlerMethod
;ArgumentBatchMethodArgumentResolver
、ArgumentMapBatchMethodArgumentResolver
、ArgumentsBatchMethodArgumentResolver
and update document;BatchHandlerMethodArgumentResolver
.