7

我有一个关于 symfony2 惰性服务的问题。我们什么时候应该使用惰性服务,什么时候应该避免它们?如果我们使用惰性服务,会有任何开销吗?

4

1 回答 1

5

文档中:

在某些情况下,您可能希望注入一个实例化有点繁重的服务,但并不总是在您的对象中使用。例如,假设您有一个 NewsletterManager,并且您向其中注入了一个邮件服务。您的 NewsletterManager 上只有少数方法实际使用了邮件程序,但即使您不需要它,邮件服务也会被实例化以构建您的 NewsletterManager。

配置惰性服务是解决此问题的一种方法。使用惰性服务时,实际上会注入邮件服务的“代理”。它的外观和行为与邮件程序类似,只是邮件程序在您以某种方式与代理交互之前不会被实际实例化。

是的,有一些开销。但它是最小的。当你不需要它们时,你应该避免使用惰性服务。(就这么简单)。

例子:

如果您的服务 A 有 3 种方法并且依赖于 B 和 C。如果您知道 B 用于所有 3 种方法中并且 C i 仅用于一种方法中,那么您可以考虑将 C 声明为惰性。如果 C 是一个繁重的服务,你应该声明它是惰性的。在这个例子中,将 B 声明为惰性不会有任何好处......所以不要...... =)

于 2015-01-07T08:42:01.093 回答