我发现Grails服务类是Singleton类型。出于什么原因,服务类被定义为Singleton?
提前致谢。
答案 0 :(得分:20)
Grails服务可能是used with different scopes,而不是只是 singleton
,可以在课堂上添加类似的内容:
static scope = "flow"
从手册:
prototype
- 每次将新服务注入另一个类时都会创建一个新服务request
- 将根据请求创建新服务flash
- 仅为当前和下一个请求创建新服务flow
- 在网络流程中,服务将存在于流程范围内conversation
- 在网络流程中,服务将存在于对话范围内。即根流及其子流session
- 为用户会话范围创建服务singleton
(默认) - 只有一个服务实例存在选择singleton
作为默认值的主要原因是为了获得更好的性能,包括减少内存使用(只有一个实例)和减少处理时间,因为您消除了创建新内存的开销对象