Oops, I apologize, I left off this other method on the module (these
methods are in generic abstract modules that I inherit from, one that
extends from AbstractModule and the other from PrivateModule):

protected <T, F> void bindFactory(Class<T> source, Class<? extends T>
klass, Class<F> factoryKlass) {
  install(new FactoryModuleBuilder().implement(source,
klass).build(factoryKlass));
}


On Fri, Mar 7, 2014 at 4:54 PM, Nate Bauernfeind <[email protected]
> wrote:

> It's a bit more work, but you could consider using assisted injection for
> this kind of use-case. My typical pattern looks like this:
>
> public class Example {
>     @Inject
>     public Example(@Assisted("host") String host
>                    HttpClient httpClient,
>                    ...) {
>        ...
>     }
>
>     /** This class is a Guice Assisted-Inject Factory. */
>     public static interface Factory {
>         Example newExample(@Assisted("host") String host);
>     }
> }
>
> ...
>
> public class ExampleModule {
>   void configure() {
>     bindFactory(Example.class, Example.Factory.class);
>   }
>
>   protected <T, F> void bindFactory(Class<T> klass, Class<F> factoryKlass)
> {
>         bindFactory(klass, klass, factoryKlass);
>    }
> }
>
> And then you can still use a provider method (if you prefer!) and then you
> inject the factory and the settings.
>
> @Provides
> public Example someExample(Example.Factory factory, Settings settings) {
>   return factory.newExample(settings.getHost());
> }
>
> Hope that helps! I use this pattern a lot, but not often mixed with a
> Provider -- usually I have a class that manages the multiple instances
> key'ed by some name (like client or user).
>
>
> On Fri, Mar 7, 2014 at 4:44 PM, Mikkel Petersen <[email protected]> wrote:
>
>> Because I want to receive other bindings:
>> public Service someService(@Inject Settings settings)  {
>>   SomeService s =  new SomeService(settings.getHost())
>>   inj.injectMembers(s)
>>   return s
>> }
>>
>>
>>
>>
>> Den fredag den 7. marts 2014 23.32.42 UTC+1 skrev Nate Bauernfeind:
>>>
>>> What about your use case prevents you from using a normal .to binding?
>>>
>>> bind(SomeService.class).to(SomeService.class)
>>>
>>> Nate
>>>
>>>
>>> On Fri, Mar 7, 2014 at 4:13 PM, Mikkel Petersen <[email protected]>wrote:
>>>
>>>>  Hello all
>>>>
>>>> I have a slight problem with guice injection when using a method
>>>> annotated with  @Provides
>>>>
>>>> example :
>>>>
>>>> @Provides
>>>> public Service someService() {
>>>>  return new SomeService()
>>>> }
>>>>
>>>> I would like to get the current context injected in SomeService..I
>>>> don't understand why Guice doesn't do that automatically, any particular
>>>> reason for that ?
>>>>
>>>> I know I could do something like this (it works):
>>>>
>>>> @Provides
>>>> public Service someService(@Inject Injector inj)  {
>>>>   SomeService s =  new SomeService()
>>>>   inj.injectMembers(s)
>>>>   return s
>>>> }
>>>>
>>>> But there must be a simpler way.
>>>>
>>>> Thanks
>>>>
>>>> Ps, another question, how to add syntax highlighting ?
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  --
>>>> 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 [email protected].
>>>> To post to this group, send email to [email protected].
>>>>
>>>> Visit this group at http://groups.google.com/group/google-guice.
>>>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/google-guice.
>> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/d/optout.

Reply via email to