Доступ к схеме 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]
└─────┘
Любая помощь будет оценена по достоинству.