Использование resources.groovy для определения сервисов - PullRequest
1 голос
/ 08 октября 2011

Я использую resources.groovy для объявления службы, например,

aService (com.foo.OrganizationService)

, чтобы я мог связать aService с моими контроллерами вместо использования organizationService, которыйможет измениться в будущем.

Я заметил, что OrganizationService не рассматривается как специальный, как другие сервисы "not", объявленные в resources.groovy.Например, он не внедряется с помощью grailsApplication, и, скорее всего, с hibernateSession и т. Д., И с другими вещами, которые я еще не использовал ...

Теперь я знаю, что могу вручную подключить материал к своему сервису, но ялучше не поддерживать это ...

Есть ли особый способ объявить службу в resources.groovy, чтобы ее обрабатывали как другую службу, загружаемую с помощью grails?

TIA

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Так что я прошел полный круг по этому вопросу.Это проблема времени.Где сервисы еще не были инициализированы.

В основном, когда вы используете resources.groovy для создания служебной проводки, вы рискуете использовать Сервис, который может инициализировать себя, например, метод afterPropertiesSet или статические инициализаторы, которые используют сервисы grails (log, hibernate session, ..), которыееще не вводили

Итак ... Вместо этого я обратился к созданию собственного BeanBuilder в файле BootStrap.groovy.

        BeanBuilder builder = new BeanBuilder(grailsApplication.parentContext)
    def bb = builder.beans {
        LoginListener(com.foo.LoginListener) {
            springSecurityService = ref("springSecurityService")
            userService = ref("userService")
        }
    }
    bb.registerBeans(grailsApplication.mainContext)
1 голос
/ 10 октября 2011

Короткий ответ на ваш вопрос "нет".

Под прикрытием сервисы Grails управляются неким интеллектуальным кодом, который ссылается на определенное местоположение и ожидает определенные свойства.

Просмотр исходного кода (особенно вокруг ServicesGrailsPlugin.groovy) - это хороший способ увидеть «магию» в том, как они соединены вместе.

Есть ли причина, по которой вы не захотите использовать службу Grails, чтобы решить вашу проблему? Если вы ожидаете чего-то вроде приложения grailsApplication, похоже, что это использование довольно специфично для Grails и будет хорошим кандидатом для переноса на «истинный» сервис Grails.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...