关于Grails服务类的Singleton属性

时间:2018-09-29 16:18:26

标签: java grails

我对Grails Service Class单例属性有点困惑。众所周知,Grails服务类默认为单例。如果是这样,为什么它允许使用new关键字实例化类而不会出现任何错误?如果我们实例化服务类,它会在每次调用时创建不同的对象吗?

2 个答案:

答案 0 :(得分:2)

Grails服务的范围与Spring如何进行依赖项注入有关。此范围仅影响注入的服务。

您可以随意实例化服务类多次,并且每次都会创建一个新实例。框架没有限制,也没有限制。但是,您应该坚持依赖注入来访问您的服务。

答案 1 :(得分:1)

  

如果是这样,为什么它允许在没有任何实例的情况下实例化该类   使用新关键字时出错?

我们并没有阻止您创建实例,但是没有充分的理由这样做。您永远不要new在应用程序中建立Grails服务类的实例。

  

如果我们实例化服务类,它会创建不同的   每个通话对象?

是的,但是如上所述,您永远不要创建实例。

Grails服务工件默认情况下为单例,这意味着创建1个实例并将其添加到Spring应用程序上下文中。如果要引用该实例,则应让Spring在需要的地方注入该实例,而不是自己创建一个实例。