Как пользоваться сервисами 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 для более подробной информации.

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