There are many different implementations depending on the scope and the binding.
An incomplete list is:
- InjectorImpl.getProviderOrThrow()
- Scopes.SINGLETON
- ProviderLookup.getProvider()
- Providers.of()
- Providers.gucify()

In the end it doesn't matter which implementation is actually injected.
The main things you need to know is what a provider is good for:
- Delayed injection (because something is expensive to create or only available in a specific scope) - Multiple injection (because you need more than one instance off it. If this is the case think twice if you need DI for this class or rather a factory)
- Provide your own Provider (if you implement a custom scope)


On 12.02.2018 13:38, competitiveprogramming.pie...@gmail.com wrote:
I was reading that page but I can't find where it explicitly says they are generated. Would you know where the code that generates them is ?

On Monday, February 12, 2018 at 12:32:33 PM UTC, scl wrote:

    Yes, Providers are generated on the fly by guice.

    https://github.com/google/guice/wiki/InjectingProviders
    <https://github.com/google/guice/wiki/InjectingProviders>



    On 12.02.2018 13:19, competitivepro...@gmail.com <javascript:> wrote:
    Hi all,

    I apologise if my question sounds silly or badly grounded.

    I am working on a project which makes intense use of Google Guice
    and I've seen several places where the class I am working with
    uses injected providers, such as:

    |
    classWhatEver{
    @Inject
    WhatEver(Provider<A>providerOfA ...){...}

    }
    |

    I do not understand how/what implements the provider as I do not
    see any class around my module explicitly implementing the interface.

    |
    Provider<A>
    |


    I am pretty sure there is not any.

    How does that work ? Are providers synthesised/generated ? If yes
    I would like to see where this is done - so I can have a better
    idea about how the whole thing works.

    Thanks in advance,
    Pietro.

-- You received this message because you are subscribed to the
    Google Groups "google-guice" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to google-guice...@googlegroups.com <javascript:>.
    To post to this group, send email to google...@googlegroups.com
    <javascript:>.
    Visit this group at https://groups.google.com/group/google-guice
    <https://groups.google.com/group/google-guice>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/google-guice/df1847bb-6125-434a-b00c-53614000aeb8%40googlegroups.com
    
<https://groups.google.com/d/msgid/google-guice/df1847bb-6125-434a-b00c-53614000aeb8%40googlegroups.com?utm_medium=email&utm_source=footer>.
    For more options, visit https://groups.google.com/d/optout
    <https://groups.google.com/d/optout>.

--
You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice+unsubscr...@googlegroups.com <mailto:google-guice+unsubscr...@googlegroups.com>. To post to this group, send email to google-guice@googlegroups.com <mailto:google-guice@googlegroups.com>.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/2f4ed289-ed7c-458e-bce3-ba4e64994438%40googlegroups.com <https://groups.google.com/d/msgid/google-guice/2f4ed289-ed7c-458e-bce3-ba4e64994438%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-guice+unsubscr...@googlegroups.com.
To post to this group, send email to google-guice@googlegroups.com.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-guice/19f31fed-0425-3308-a05c-847f041ec53f%40gmx.ch.
For more options, visit https://groups.google.com/d/optout.

Reply via email to