据我所知,使用bootstrap.groovy和控制器的标准方法是创建数据并将其保存到引导程序init()中的DB中 然后控制器可以读取数据,因此两者之间的“中间人”就是数据库。
但是,如果我想在bootstrap.groovy中创建数据并且不将它们保存在数据库中(让我们假设这些数据不需要保存)怎么办?如何将数据注入控制器以便它们可以用于视图渲染?
我们来看一个域类Book的简单示例。只需要在bootstrap中,我只想创建一本包含100本书的虚拟列表:
class BootStrap {
def grailsApplication
def List<Book> books
def init = { servletContext ->
books = new ArrayList<>()
for (int i=0; i<100; i++) {
books.add(new Book(numPages: 20))
}
}
def destroy = {
}
}
现在的目标是向BookController公开/注入他的书籍列表。 我该怎么办?关于这个
,我找不到任何简单的方法或答案答案 0 :(得分:0)
默认情况下,服务在Grails中是单例,因此您可以将该数据存储在服务中。但是你必须要小心,因为服务可以同时使用。
答案 1 :(得分:0)
为了概括我上面发布的问题(在阅读quindimildev的答案之后),通常每个框架都应该有一种方法来执行初始化操作......例如从文件或数据库或第三方服务初始化缓存。应用程序启动时,这些数据已准备就绪,可供控制器等使用......
我在grails中看到的典型应用程序/示例没有考虑到这一点,他们假设您的数据库已填充并通过控制器操作进行读取。这对大多数应用程序来说都很好,但是如果grails没有提供在启动时构建缓存的机制(一次可能需要几秒钟的操作),一旦应用程序启动,所有控制器都可以使用它,我会感到惊讶
我希望这能澄清我试图解决的问题