, приложение я работаю имеет одну услугу, на которую ссылается, как это:Рефакторинг служба инъекции/конкретизация в приложении Grails
private def widgetServ = new WidgetService()
в другой службе. Методы призваны widgetServ
так:
def aVar = widgetServ.SomeMethod()
Внутри widgetServ
соединения SQL создается с помощью этого:
def sql = Sql.newInstance(...
Вот некоторые вопросы, которые стоят перед нами:
Поскольку мы используем «новый» мы не могут иметь неявных транзакций, используя static transactional = true
, согласно документам Grails. При попытке обновить Grails с 1.3.7 до 2.4.4 мы заметили, что создание переменной sql выше ошибки выдается из-за того, что система не может найти драйвер jdbc. Мы не хотим использовать новые и вместо этого вводим WidgetService
.
Вопрос в том, что кто-нибудь столкнулся с этим и может ли вы опубликовать любые подводные камни?
Другая услуга в системе имеет схожие проблемы, но хуже, поскольку она используется как POGO и имеет экземпляр 140+, где он создан новым. Кроме того, некоторые контроллеры вводят его и создают новые. Какой подход следует использовать при удалении всех «новых» творений службы? У системы возникают проблемы с устаревшими ссылками и отсутствием данных, которые могут быть вызваны отсутствием управления транзакциями в этих службах.
Примечание: вторая служба, на которую я ссылаюсь, имеет несколько конструкторов. – Thanks4Playing