0
据我所知,Grails的努力很努力地是无状态的,但是我有一个需要我的控制器,以保持特定fizz
值的一个应该每个HTTP请求中找到:缓存状态Grails的控制器
class MyController {
List<Fizz> cachedFizzes = new ArrayList<Fizz>()
def index() {
Fizz fizz = extractFizz(params)
cachedFizzes << fizz
...
}
...
}
但是,当在本地测试这种方法时,似乎cachedFizzes
已被每个HTTP请求重新实例化,因此无论我调用此控制器的其中一个操作多少次,列表Fizz
es都不会增长。
那么请问:我怎么能(专门)与List<Fizz>
将存在和整个应用(不控制器/ HTTP请求)的寿命增长注入MyController
?
“我需要一个控制器来保留应该在每个HTTP请求中找到的特定fizz值” - 这听起来像是一个破碎的要求。我希望,如果你深入研究并确定实际需求是什么,你将会得到更好的解决方案。我无法准确猜测实际需求是什么,但我敢打赌,它可能更像是您需要访问每个请求中的特定值,而不是该值需要在控制器实例中维护特别是,这几乎肯定是错误的事情。 – 2014-11-03 14:07:42
更常见,也更少问题的事情经常涉及维护控制器外的某个地方的状态,比如单身bean可能是但不一定是服务。你可能仍然希望你的控制器是单身人士,但不是因为这可以帮助你做你想在这里做的事情。 – 2014-11-03 14:11:43