在MyService中,我有以下内容:
import groovy.sql.Sql
class MyService {
Sql groovySql
def serviceMethod(){
groovySql.firstRow("some query.....")
}
}
在resources.groovy groovySql中注入如下:
groovySql(groovy.sql.Sql, ref('dataSource'))
这是Grails 2.4.5应用程序。现在,问题是当serviceMethod
被调用时,连接是否自动关闭?
答案 0 :(得分:3)
Sql
中的每个方法都会在必要时创建和释放资源。
在幕后,门面隐藏了与获取相关的细节 连接,构造和配置语句,与之交互 连接,关闭资源和记录错误。
如果您使用Sql
创建DataSource
,则每次都会获得一个新连接,并在操作结束时关闭它。
如果我们使用DataSource并且我们没有启用语句缓存, 然后严格来说,最后的close()方法不是必需的 - 如 所有连接处理都是代表我们透明地执行的; 然而,将它放在那里并没有什么坏处,因为它将无声地返回 在那种情况下。