On 2/26/07, Konstantin Priblouda <[EMAIL PROTECTED]> wrote:
Hi Bob, I'd like to say that I'm codeveloper of pico/nanocontainer.
I've used Pico and Nano. Nano uses my AOP framework. You should try Guice.
What's important is that you don't depend on the > implementation. Depending > on the interface and annotation is OK. Strings are a > pain. We do not depend on string keys to dientify components - key in container is just object, and is needed only in case of ambiguity ( but it could be string as well )
Using these key objects is more verbose than using annotations with Guice.
Basically I just register this session component - and my HibernateUserManager receives it in constructor. Why do I need an annotation to achieve this?
The annotation indicates which constructor you want injected (to the framework as well as other programmers). What happens if you forget to configure a PasswordHasher in Pico? No hashing? That's not very secure. If you can't annotate a constructor (because you don't control the code), you can use a custom provider. For example: class HibernateUserManagerProvider implements Provider<HibernateUserManager> { @Inject Session session; @Inject PasswordHasher passwordHasher; public HibernateUserManager get() { return new HibernateUserManager(session, passwordHasher); } } Well, there is still a question why it is better than
pico ;)
Write less code, and get better up front checking and better performance. What more do you want? Bob