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

chu*_*ubs 6 database grails

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

Gra*_*her 3

当您创建控制器时,它Transactional上面有注释,例如:

\n\n
 @Transactional(readOnly=true)\n class FooController { ..\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果删除该注释(以及任何方法级注释),Grails 将不再连接到数据库来启动事务。

\n\n

Open Session In View 不应发挥作用,因为我们使用惰性初始化方法来获取与 OSIV 的连接

\n\n

请注意,我上面的回答假设您使用的是最新版本的 Grails(2.3.x 或更高版本)

\n\n

更新

\n\n

对于 MongoDB,您可以通过在以下位置定义以下 bean(覆盖默认值)来禁用所有控制器的自动连接grails-app/conf/spring/resources.groovy

\n\n
 mongoPersistenceInterceptor(org.codehaus.groovy.grails.support.NullPersistentCon\xe2\x80\x8c\xe2\x80\x8btextInterceptor) \n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n