Thanks for your response.
It's seems overly complicated and I must admit, I don't understand it
fully..though it properly works..I fail to see the usage of @Provides
methods if the object provided doesn't have the object graph injected.
Den fredag den 7. marts 2014 23.54.17 UTC+1 skrev Nate Bauernfeind:
>
> 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]<javascript:>
> > 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> 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.