我对Grails Service Class单例属性有点困惑。众所周知,Grails服务类默认为单例。如果是这样,为什么它允许使用new关键字实例化类而不会出现任何错误?如果我们实例化服务类,它会在每次调用时创建不同的对象吗?
答案 0 :(得分:2)
Grails服务的范围与Spring如何进行依赖项注入有关。此范围仅影响注入的服务。
您可以随意实例化服务类多次,并且每次都会创建一个新实例。框架没有限制,也没有限制。但是,您应该坚持依赖注入来访问您的服务。
答案 1 :(得分:1)
如果是这样,为什么它允许在没有任何实例的情况下实例化该类 使用新关键字时出错?
我们并没有阻止您创建实例,但是没有充分的理由这样做。您永远不要new
在应用程序中建立Grails服务类的实例。
如果我们实例化服务类,它会创建不同的 每个通话对象?
是的,但是如上所述,您永远不要创建实例。
Grails服务工件默认情况下为单例,这意味着创建1个实例并将其添加到Spring应用程序上下文中。如果要引用该实例,则应让Spring在需要的地方注入该实例,而不是自己创建一个实例。