服务层的作用域
用途
设置服务层作用域
示例
class BookService {
static scope = "session"
…
}
描述
缺省情况下,service中的方法不是同步的,没有什么能阻止并发执行service中的方法。因为service是单例并且可能会并发执行,你要在service中保存状态时需要慎重考虑一下,最好是不要在service中存储任何状态.
你可以通过将service放入一个特定的范围来改变这个行为.目前支持的范围有:
prototype
- 当它每次被注入另外一个类时,创建一个新的service
request
- 每个请求创建一个新的service
flash
- 为当前和下一个请求创建一个service
flow
-为一个web flow创建一个service
conversation
- 在web flow中,为一个会话创建一个service. 比如一个根流程和它的子流程.
session
- 为一个用户会话创建一个service
singleton
- (默认) - 始终只有一个service实例存在
在用户指南中,查看 Scoped Services 章节了解更多内容.