Hi Folks,

We're using the Registry-style approach to lifecycle-management (among
other things).  This means we need to mark the class that does the
registration as a singleton and that we need to either
 a) Use Stage.PRODUCTION in the Injector
or
 b) Bind it as an eagerSingleton.

I'm personally very much against b) because it separates the knowledge
between two classes, the implementation and the Module.  That seems
confusing to me -- requiring that you have to navigate to two classes
to make sure the instance is registered appropriately.

a) works very well, but has a minor drawback that all @Singletons are
now eagerly loaded.  This isn't a terrible thing in and of itself, but
sometimes you want to use a Singleton because it's a Singleton, not
because it needs to be loaded early.

So, I propose two solutions, both of which I'll be glad to code up
myself -- I'd just like to get some feedback from folks and see if
this is a desired feature.

Proposal One: @Singleton(eager=true) -- forces the Singleton to be
loaded eagerly.  It would act exactly the same as .asEagerSingleton(),
except that the information about the binding is where @Singleton is
listed, not where the binding is done.  (This is only useful, of
course, if the @Singleton annotation is being used.  If binding is
done using in(Scopes.SINGLETON), then asEagerSingleton would still be
the preferred method.)

Proposal Two: @Singleton(lazy=true) -- forces the Singleton to be
lazily loaded, even if Stage.PRODUCTION is used.  This has no current
analogue (and I don't propose any, but if anyone has suggestions I'm
all ears).  This would be used when you really don't to eagerly load
the singleton, for any reason.

I'd actually like two implement both, with it being an error-condition
if both eager & lazy are true.  Any thoughts?

Sam

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