我工作的应用程序有就是这个样子引用的一个服务:重构服务注入/实例在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