Adrian,
That does help, especially with the reference to the jclouds project.  A
real world example will help greatly.
Thanks,
-Brandon


On Fri, Aug 7, 2009 at 12:51 PM, Adrian Cole <[email protected]> wrote:

> Hi, Brandon.
>
> jclouds is a heavy user of guice and internally uses about 350 classes
> (excluding unit tests).  The way we work is that we create a context into
> our framework, which implies creation of an injector.  Where needed
> (rarely), Injectors are injected into classes.
>
> Getting this context is performed one of two ways:
>
> 1.  Builder that accepts external parameters like Guice constants or other
> Guice Modules needed, then builds an injector from them.
>
> Ex.
>
>>    public Injector buildInjector() {
>>
>>       useDefaultPortIfNotPresent(properties);
>>
>>       addLoggingModuleIfNotPresent(modules);
>>
>>       addParserModuleIfNotPresent(modules);
>>
>>       addConnectionModuleIfNotPresent(modules);
>>
>>       addHttpModuleIfNeededAndNotPresent(modules);
>>
>>       addExecutorServiceIfNotPresent(modules);
>>
>>       modules.add(new AbstractModule() {
>>          @Override
>>          protected void configure() {
>>             Names.bindProperties(binder(), checkNotNull(properties,
>> "properties"));
>>          }
>>       });
>>       addContextModule(modules);
>>
>> *      return Guice.createInjector(modules);*
>>    }
>>
>
> 2.  Static factory method that creates a context with minimum input using
> the above builder.
>
>   * public static S3Context createS3Context(String awsAccessKeyId, String
>> awsSecretAccessKey,
>>             Module... modules)* {
>>       return S3ContextBuilder.newBuilder(awsAccessKeyId,
>> awsSecretAccessKey).withModules(modules)
>>                .buildContext();
>>    }
>>
>
>
> I hope this helps.
> Cheers,
> -Adrian
> jclouds <http://code.google.com/p/jclouds/>
>
>
> On Fri, Aug 7, 2009 at 7:56 AM, Brandon Atkinson <
> [email protected]> wrote:
>
>> I'm looking for a little guidance on cleanly architecting a Guice based
>> project.
>>
>> I'm new to DI and Guice, but after reading the docs and the Apress Guice
>> book, I'm still a bit confused about how to architect applications to use
>> Injectors properly.  Is it common practice to have only a single Injector
>> for an application, and pass the Injector around?  If so, should I be
>> injecting the injector, or using an application wide static factory method?
>> What might be helpful is an example of a cleanly implemented Guice project
>> that is larger than two or three classes.
>>
>> Looking for a little guidance...
>>
>> -Brandon
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to