我有一个关于 symfony2 惰性服务的问题。我们什么时候应该使用惰性服务,什么时候应该避免它们?如果我们使用惰性服务,会有任何开销吗?
问问题
3389 次
1 回答
5
从文档中:
在某些情况下,您可能希望注入一个实例化有点繁重的服务,但并不总是在您的对象中使用。例如,假设您有一个 NewsletterManager,并且您向其中注入了一个邮件服务。您的 NewsletterManager 上只有少数方法实际使用了邮件程序,但即使您不需要它,邮件服务也会被实例化以构建您的 NewsletterManager。
配置惰性服务是解决此问题的一种方法。使用惰性服务时,实际上会注入邮件服务的“代理”。它的外观和行为与邮件程序类似,只是邮件程序在您以某种方式与代理交互之前不会被实际实例化。
是的,有一些开销。但它是最小的。当你不需要它们时,你应该避免使用惰性服务。(就这么简单)。
例子:
如果您的服务 A 有 3 种方法并且依赖于 B 和 C。如果您知道 B 用于所有 3 种方法中并且 C i 仅用于一种方法中,那么您可以考虑将 C 声明为惰性。如果 C 是一个繁重的服务,你应该声明它是惰性的。在这个例子中,将 B 声明为惰性不会有任何好处......所以不要...... =)
于 2015-01-07T08:42:01.093 回答