From the documentation :
In some cases, you may need to implement a service that is a little difficult to instantiate, but not always used inside your object. For example, imagine you have a NewsletterManager and you enter a mail service into it. Only a few methods in your NewsletterManager actually use the mail program, but even when you do not need it, a mail service is always created to create your NewsletterManager.
Setting up lazy services is one of the answers to this question. With a lazy service, the mail proxy is actually introduced. It looks and acts like a mail program, except that the mail program is not actually created until you somehow interact with the proxy.
Yes, there is some overhead. But it is minimal. You should not use lazy services when you do not need them. (Easy as that).
Example:
If your service A has 3 methods and depends on B and C. If you know that B is used in all 3 methods, and C I use only one method, then you can consider declaring C as lazy. You must declare that he is lazy if C is a heavy service. In this example, there would be no benefit in declaring B as lazy ... so no ... =)
source share