为什么Grails服务类是单例的?

为什么Grails服务类是单例的?,grails,Grails,我知道Grails服务类是单例类型的。出于什么原因,服务类被定义为Singleton 提前谢谢 Grails服务可能不仅仅是singleton,而是通过向类中添加类似的内容: static scope = "flow" 从手册中: prototype-每次将新服务注入另一个类时,都会创建一个新服务 请求-将为每个请求创建一个新服务 flash-将仅为当前和下一个请求创建新服务 flow-在web流中,服务将在流的范围内存在 对话-在web流中,服务将在对话范围内存在。即根流及其子流 会话-为

我知道Grails服务类是单例类型的。出于什么原因,服务类被定义为Singleton

提前谢谢

Grails服务可能不仅仅是
singleton
,而是通过向类中添加类似的内容:

static scope = "flow"
从手册中:

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

选择
singleton
作为默认值的主要原因是为了获得更好的性能,既可以减少内存使用(只有一个实例闲置),又可以减少处理时间,因为这样可以消除创建新对象的开销。

现在我有一个疑问。假设我有一个名为
m1
的服务,它支持事务。现在两个用户同时访问
m1
,如果
服务
是单例的,那么它如何在事务支持的同时处理两个用户呢。事务是在方法调用期间处理的,因此作用域不会进入其中(只要不在服务中存储状态)。