我有一个与另一台机器通信的服务。由于它是一个简单的Controller方法,当我的控制器与另一台服务器通信时,Grails会自动从池中获取数据库连接。我想阻止它这样做,并在我准备好时手动打开数据库连接,以便它在长时间内不会像打网络电话那样连接。如何防止Grails在控制器方法中自动从池中获取连接?
答案 0 :(得分:3)
当你创建一个控制器时,它上面有Transactional
注释,如:
@Transactional(readOnly=true)
class FooController { ..
如果删除该注释(以及任何方法级别注释),Grails将不再连接到数据库以启动事务。
Open Session In View不应该发挥作用,因为我们使用延迟初始化方法来获取与OSIV的连接
请注意,上面的答案假设您使用的是最新版本的Grails(2.3.x或更高版本)
已更新
对于MongoDB,您可以通过在grails-app/conf/spring/resources.groovy
中定义以下bean(覆盖默认值)来禁用所有控制器的自动连接:
mongoPersistenceInterceptor(org.codehaus.groovy.grails.support.NullPersistentContextInterceptor)
但目前无法在每个控制器的基础上禁用