Проекция Spring GraphQL не вызывает исключения распознавателя компонентов
У меня есть приложение Spring Boot с библиотекой Spring для GraphQL, и мне нужно изменить возвращаемый объект. Итак, я создал и зарегистрировал класс проекции, ссылаясь на мой метод компонента:
public interface MyEntityProjection {
@Value("#{@myBean.getName()}")
public String getName();
}
Но это приводит к
org.springframework.expression.spel.SpelEvaluationException: EL1057E: No bean resolver registered in the context to resolve access to bean 'myBean'
при выполнении запроса. Вероятно, bean-resolver нужно как-то зарегистрировать, но в документации нет информации https://docs.spring.io/spring-graphql/docs/1.0.0-SNAPSHOT/reference/html/
Простое приложение, иллюстрирующее мою проблему: https://github.com/omichal/spring-graphq-no-bean-resolver
1 ответ
К сожалению, это очень самоуверенное поведение самого фреймворка.
Вы должны добавить к заклинанию target. В вашем случае это будет:
@Value("#{target.name}")
По умолчанию фреймворк вызывает исходный метод bean-компонента getName — вам не нужно помещать метод get.