Как пользоваться сервисами Grails в классе помощников
У меня есть сервис, созданный в Grails 2.4
раздел услуг. В контроллере используется внедрение зависимостей, и оно автоматически инициализируется. Я хочу использовать тот же сервис, скажем ClassifiedService
из пользовательского вспомогательного класса, который определен в src/groovy
папка.
Вопрос 1: Должен ли я напрямую позвонить в службу, как указано ниже:
ClassifiedService classifiedService = new ClassifiedService()
Если я попытаюсь использовать внедрение зависимостей Grails, как показано ниже, объект всегда будет нулевым.
def classifiedService
Вопрос 2: Рекомендуется создать интерфейс для метода Service, использовать его и инициализировать его реальным классом?
1 ответ
Вы можете добавить свой класс помощника в conf/spring/resources.groovy
:
import foo.bar.MyHelperClass
beans = {
myHelperClass(MyHelperClass)
}
Это создает бин с именем myHelperClass
с классом MyHelperClass
, Все поля внутри этого bean-компонента являются автоматически связанными (внедрение зависимостей происходит автоматически).
После этого вы можете добавить сервисную зависимость в myHelperClass
с помощью
def classifiedService
Вы также можете внедрить вспомогательный класс в контроллеры и сервисы. Если вам нужен доступ к вспомогательному классу вне контроллеров / сервисов, вы можете получить экземпляр, используя
def helper = grailsApplication.mainContext.getBean('myHelperClass')
См. Весенний раздел в документации Grails для более подробной информации.