grails - Grails 如何使 `params` 可用于单例 Controller ? (Grails 内部结构)

标签 grails groovy singleton metaprogramming

如果我通过以下方式使 Grails Controller 成为单例:

static scope = "singleton"

... Grails 如何公开 params Controller 操作的变量,其中 params请求是特定的吗?

如果params,我会理解作为变量传递到我的操作方法中,但这里 params只是可用且在范围内(并且对于同时请求不同,尽管我的 Controller 只有一个实例)。

这是如何在幕后实现的?

最佳答案

每个请求都有自己的线程,因此无论 Controller 是单例还是为每个请求创建新的,请求、响应、参数、 session 等都是可用的。如果这些变量是类中的字段,情况会有所不同,但它们不是。

在幕后,这是通过混合在 org.codehaus.groovy.grails.plugins.web.api.ControllersApi 中的 AST 转换实现的。到 Controller 类中,它添加了诸如 getParams() 之类的方法(您可以将其用作 params 属性)。这些电话RequestContextHolder.currentRequestAttributes()获取线程本地信息。

关于grails - Grails 如何使 `params` 可用于单例 Controller ? (Grails 内部结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492160/

相关文章:

grails - Spring安全核心框架在Grails Spring安全核心插件中配置了两次

linux - 从 Jenkins 连接到 EC2 实例失败 : Host key verification failed

Groovy - 接口(interface)中定义的方法可以有默认值吗?

java - Groovy 使用反射读取特征方法

objective-c - Objective-C 中的优雅和 'correct' multiton 实现?

ios - 设置 AFNetworking 3.x 单例请求和响应序列化

grails - Grails控制台-无法找到类(class)?

unit-testing - 我可以配置 Grails 以在我的插件中查看测试类吗?

grails - 获取最新的10个注册用户-Spring Security Grails

C++ 单例尝试 : unresolved external symbol