为什么Grails服务类是Singleton?

时间:2012-06-19 05:49:41

标签: grails

我发现Grails服务类是Singleton类型。出于什么原因,服务类被定义为Singleton?

提前致谢。

1 个答案:

答案 0 :(得分:20)

Grails服务可能是used with different scopes,而不是只是 singleton,可以在课堂上添加类似的内容:

static scope = "flow"

从手册:

  • prototype - 每次将新服务注入另一个类时都会创建一个新服务
  • request - 将根据请求创建新服务
  • flash - 仅为当前和下一个请求创建新服务
  • flow - 在网络流程中,服务将存在于流程范围内
  • conversation - 在网络流程中,服务将存在于对话范围内。即根流及其子流
  • session - 为用户会话范围创建服务
  • singleton(默认) - 只有一个服务实例存在

选择singleton作为默认值的主要原因是为了获得更好的性能,包括减少内存使用(只有一个实例)和减少处理时间,因为您消除了创建新内存的开销对象