Grails: используем Services в Domain и Command objects

Grails: используем Services в Domain и Command objects

Кто понял — тот понял.

Кто не понял, но по каким-то невероятным причинам хочет понять, объясняю.

По умолчанию в Grails сервисы подключаются (через этот ваш механизм инверсии контроля) только в контроллеры и сами же сервисы. (ну может быть еще куда). Но никак вот не в Domain и не в Command Objects. А иногда этого очень хочется.

пример:

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH

class MyCommand {
   def myService

   def myAction = {
     def ctx = AH.application.mainContext
     myService = ctx.myService
     myService.something()
   }
}

 

То есть, получаем экземпляр текущего контекста приложения, в котором хранятся экземпляры всех сервисов приложения. Напрямую получать экземпляры сервисов через .newInstance() не нужно, так как при этом никакой магии спринга не будет.


Вполне возможно, что есть и другие варианты

(Тут копипаста почти что целиком из мейллиста Grails, автор кода — легендарный Burt Beckwith)

Комментарии (0)

mem: 1146 total: 25 module: 17 xsl: 4