阻止Grails在Controller方法中打开与数据库的连接

时间:2014-06-27 14:56:56

标签: database grails

我有一个与另一台机器通信的服务。由于它是一个简单的Controller方法,当我的控制器与另一台服务器通信时,Grails会自动从池中获取数据库连接。我想阻止它这样做,并在我准备好时手动打开数据库连接,以便它在长时间内不会像打网络电话那样连接。如何防止Grails在控制器方法中自动从池中获取连接?

1 个答案:

答案 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.NullPersistentCon‌​textInterceptor) 

但目前无法在每个控制器的基础上禁用