用Grails编写一个小型Web应用程序时,我遇到了全局对象的问题。我有一个运行线程的类-具有排队的ExecutorService。
问题是在哪里创建此类的对象,以使其在Controller中可用?
我已经在init(BootStrap)上尝试过了,但是没有机会再将其实例放在其他任何地方。
总的来说,我需要在整个应用程序的一个实例中创建一个对象,并且可以通过Model和/或Controller访问。
最佳答案
实现此目的的标准方法是使用grails-app/conf/spring/resources.groovy
中的declare the object as a Spring bean
threadPool(java.util.concurrent.Executors) { bean ->
bean.factoryMethod = "newCachedThreadPool"
}
然后在 Controller /服务/等。您可以像使用grails服务一样注入(inject)该bean,即
def threadPool
但是在这种情况下,您可能会发现简单地使用the
executor
plugin会更容易,它为您定义了这样的bean,并处理了确保有效的GORM session 可用于后台任务的复杂性。