InfoQ имеют бесплатную электронную книгу:
Доменный Управляемый Дизайн Быстро
Это - хорошее чтение с большим количеством примеров.
Я полностью согласен с аргументацией Джона - использование GSP в сервисах обычно является плохим дизайнерским решением. Но нет правил без исключений! Если вы все же хотите это сделать, попробуйте следующий подход:
class MyService implements InitializingBean {
boolean transactional = false
def gspTagLibraryLookup // being automatically injected by spring
def g
public void afterPropertiesSet() {
g = gspTagLibraryLookup.lookupNamespaceDispatcher("g")
assert g
}
def serviceMethod() {
// do anything with e.g. g.render
}
}
Используя bean-компонент gspTagLibraryLookup, вы, конечно, можете получить доступ ко всем другим желаемым библиотекам тегов в службе.
Я бы посоветовал сделать это в контроллере. Сервис должен иметь многоразовую логику и не зависеть от шаблона представления, оставьте эту работу контроллеру. Используйте службу для получения данных, которые необходимо передать в шаблон, но оставьте работу по взаимодействию с шаблоном контроллеру.