我工作的應用程序有就是這個樣子引用的一個服務:重構服務注入/實例在Grails應用程序
private def widgetServ = new WidgetService()
在另一個服務
。方法被稱爲上widgetServ
這樣的:使用此創建
def aVar = widgetServ.SomeMethod()
內widgetServ
SQL連接:
def sql = Sql.newInstance(...
。這是我們所面臨的一些問題:
由於我們使用的「新」,我們根據Grails文檔,不能使用static transactional = true
進行隱式事務。在試圖將Grails從1.3.7升級到2.4.4時,我們注意到由於系統無法找到jdbc驅動程序,因此在創建sql變量時拋出錯誤。 我們不想使用新的,而是注入WidgetService
。
問題是有沒有人遇到過這個問題,你可以發佈任何陷阱?
系統中的另一項服務有類似的問題,但由於它被用作POGO並且有140多個實例被創建爲新的,所以更糟。另外,一些控制器注入並創建新的。 我們應該用什麼方法去除服務的所有'新'創作?系統確實存在過時的引用和丟失的數據問題,這些問題可能是由於這些服務中缺少事務管理引起的。
注意:我引用的第二個服務有多個構造函數。 – Thanks4Playing 2015-04-03 12:28:38