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