Доступ к схеме graphql во время запуска приложения с весенней загрузкой

Создайте приложение для весенней загрузки с помощью netflix-dgs. Я использую некоторые настраиваемые директивы, и мне нужно проанализировать схему, чтобы получить эти директивы. В настоящее время я делаю это по запросу при использовании DgsDataFetchingEnvironment.getGraphQLSchema()

Это действительно неэффективно, и я хотел получить доступ к объекту при запуске сервера, чтобы я мог один раз проанализировать эти директивы и повторно использовать их для каждого запроса.

У класса в DGS есть bean-компонент, созданный для GraphQLSchema но добавление этого в вызывает круговое различие между моим сборщиком данных и DgsAutoConfiguration.

Текущий неэффективный код:

      @DgsComponent
public class EntityDataFetcher {
.
.
.
@DgsQuery(
            field = DgsConstants.QUERY.QueryEntities
    )
    public ChangeConnection fetchEntities(@InputArgument List<String> entityId,
                                         final DgsDataFetchingEnvironment dfe) {

        var directives = schemaParser.getDirectives(dfe.getGraphQLSchema());
        return service.getEntities(entityId, directives);
    }
}

Добавление в deps:

      @DgsComponent
public class EntityDataFetcher {
   .
   .
   .

    @Autowired
    public QueryChangesDataFetcher(EntityService service, SchemaParser schemaParser ) {
        this.service = service;
        this.schemaParser = schemaParser;
    }

    @DgsQuery(
            field = DgsConstants.QUERY.QueryEntities
    )
    public ChangeConnection fetchEntities(@InputArgument List<String> entityId,
                                         final DgsDataFetchingEnvironment dfe) {

        var directives = schemaParser.getDirectives();
        return service.getEntities(entityId, directives);
    }
}

@Component
public class SchemaParser{

    @Autowired
    public SchemaParser(GraphQLSchema schema){
        this.schema = schema;
        someParsinglogic();

    }
    ...

}

Я получаю ошибку:

      ┌─────┐
|  entityDataFetcher defined in file [.../graphql/EntityDataFetcher.class]
↑     ↓
|  schemaParser defined in file [.../util/SchemaParser.class]
↑     ↓
|  schema defined in class path resource [com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.class]
└─────┘

Любая помощь будет оценена по достоинству.

0 ответов

Другие вопросы по тегам