JCatapult also uses Guice for everything. It uses a single injector  
that is created in a ServletContext listener. It uses Guice 1.0, but  
I'm planning on updating to Guice 2.0 at some point. It should be a  
simple update and possibly just a dependency switch.

-bp


On Aug 7, 2009, at 11:36 AM, Brandon Atkinson wrote:

> 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
>
>
> 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