用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 可用于后台任务的复杂性。

08-25 12:30
查看更多