Ich konnte es mit @ RestControllerAdvice
nicht bekommen und wollte ein bisschen detailliertere Informationen als @ ExceptionHandler
.
val spring_version=2.2.2.RELEASE
implementation("com.graphql-java-kickstart:graphql-spring-boot-starter:6.0.0")
implementation("org.springframework.boot:spring-boot-starter:$spring_version")
implementation("org.springframework.boot:spring-boot-starter-web:$spring_version")
Es scheint gut, "Map <String, ExecutionStrategy>" in der Bean zu registrieren.
@Configuration
class GraphQLConfig {
@Bean
fun executionStrategies(): Map<String, ExecutionStrategy> {
val customDataFetcherExceptionHandler = CustomDataFetcherExceptionHandler
return mapOf(
"queryExecutionStrategy" to AsyncExecutionStrategy(customDataFetcherExceptionHandler),
"mutationExecutionStrategy" to AsyncSerialExecutionStrategy(customDataFetcherExceptionHandler)
)
}
class CustomDataFetcherExceptionHandler: SimpleDataFetcherExceptionHandler() {
override fun onException(handlerParameters: DataFetcherExceptionHandlerParameters): DataFetcherExceptionHandlerResult {
//Benachrichtigen Sie mich nett
//Wenn Sie Informationen auf niedrigerer Ebene wünschen
// handlerParameters.dataFetchingEnvironment.getContext<GraphQLServletContext>().Es scheint, dass Sie es mit httpServletRequest bekommen können.
return super.onException(handlerParameters)
}
}
}
Ich bin mir immer noch nicht sicher, ob "AsyncExecutionStrategy" und "AsyncSerialExecutionStrategy" in Ordnung sind, aber im Moment kann ich den Fehler auf etwas wie "Slack" überspringen.
Bitte kommentieren Sie, ob es einen besseren Weg gibt.