为什么Grails服务类是Singleton?

Ant*_*t's 10 grails

我才知道Grails服务类是Singleton类型.出于什么原因,服务类被定义为Singleton?

提前致谢.

Ove*_*ous 20

Grails服务可以与不同的范围一起使用,而不仅仅是 singleton通过向类添加这样的东西:

static scope = "flow"
Run Code Online (Sandbox Code Playgroud)

从手册:

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

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