MentaContainer: IoC simples e rápido

o pico implementa o que vc chamou de CLEAR… é só dar um container.stop() que ele chama todos os destroys.

como eu disse, no pico é vc quem controla os escopos então é só colocar criar um pico no começo da request, e fechar no final.

Seguindo algumas dicas do pessoal aqui, principalmente do Lucas, estou lançando uma nova versão do MentaContainer, agora no endereço: http://www.mentacontainer.org

As principais mudanças foram o suporte a DI via construtor e auto-wiring via construtor e setter. O auto-wiring ficou bem limpo:

Container c = new MentaContainer();

c.ioc("connection", Connection.class); // in real life this will be a connection pool factory...
c.ioc("accountDAO", JdbcAccountDAO.class);
c.ioc("userDAO", JdbcUserDAO.class);

c.autowire("connection"); // any bean that needs a connection in the constructor or setter will receive one...

AccountDAO accountDAO = c.get("accountDAO");
UserDAO userDAO = c.get("userDAO");

System.out.println(accountDAO.getBalance(25)); // => 1000000
System.out.println(userDAO.getUsername(45)); // => "saoj"

Também foi adicionado interceptadores para factories. As funcionalidades agora são:

:arrow: Programmatic Configuration
:arrow: Bean Instantiation through constructors
:arrow: Bean Initialization through setters
:arrow: Dependency Injection through constructors
:arrow: Dependency Injection through setters
:arrow: Auto-wiring through constructors and setters (very simple!)
:arrow: Injection through setters so you can populate any external object with objects from the container
:arrow: Instantiation through constructors so you can instantiate any external class with objects from the container
:arrow: Support for SINGLETON and THREAD scopes, plus you can easily create REQUEST and SESSION scopes for web projects.
:arrow: Generic Factories so you can easily turn anything into a object factory.
:arrow: Interceptors for factories: onCreated, onDestroyed, useful for object pooling.