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