Конечно, я полностью согласен с @antoine в отношении состояния без контроллера. Вообще говоря, парадигма MVC очень сильно меняет способ учета переменных в программировании: вы всегда должны учитывать GORM и DB, если хотите сохранить значения.
В любом случае, может быть интересный альтернативный способ борьбы с глобальными ценностями; глобальные значения для всех действий контроллера, а также для сервисов: используя сеанс пользователя. Например:
Class MyController {
def myService
def act1 = {
session.myvalues = [:]
session.myvalues.myflag = true
...
myService.service1()
}
}
и в сервисе, использующем его
Class MyService {
def service1() {
def sess = RequestContextHolder.currentRequestAttributes().getSession()
if (sess?.myvalues?.myflag) println "Found true in myflag"
}
}
Итак, я готовлю в сеансе пользователя пустую карту с именем "myvalues" и внутри нее помещаю флаг. Затем я возвращаюсь к сеансу в сервисе и обнаружил, что внутри моего флага правильно обновлено. Имейте в виду, что эта глобальность ограничена сеансом пользователя со всеми ограничениями относительно сеанса пользователя. Но это правильно, потому что пользовательский сеанс является чем-то глобальным, пока пользователь не использует систему, будучи отделенным от всех других пользователей, использующих ее одновременно. И потерять значения, если тот же пользователь получит другой сеанс.