[quote=Hal Jordan][quote=saoj]
Alguém ai poderia colocar comparativos com Pico e String também.
[/quote]
Spring tá aqui : http://code.google.com/p/google-guice/wiki/SpringComparison
Mas a comparação com o String é meio dificil, deixo isso como tarefa pra evangelistas!!! [/quote]
Acho que eles foram bastante políticos na comparação com Spring. O que pareceu é que eles estão falando entrelinhas que “O Guice é mais simples que o Spring”.
Mencionam tb o fato do Spring ter muito XML. Não acredito que nessa altura do campeonato o Spring ainda não tenha uma configuração programática como o Guice e como o Mentawai. Alguns vão dizer que preferem XML. Ok! Gosto não se discute, mas foi bom ver que os caras do Google também gostam de configuração programática.
Outra observação interessante é que eles defendem o uso de annotations. Eu ainda estou me definindo sobre isso, mas acredito que annotation é intrusivo. Se vc tem um modelo de dados que recebe um DAO, vc pode colocar uma annotation no campo do DAO para dizer que ele vai receber a implementação vai IOC. Mas vc não estaria atrelando o seu modelo a annotation do container de IOC ???
O que o Mentawai faz é usar o nome da propriedade para definir a dependencia, ou seja, quando eu defini o IOC eu associei um nome a ele, no caso “myService”:
ioc("myService", ServiceImpl.class, APPLICATION);
Logo não precisa de annotation pois o InjectionFilter vai ver que o nome da propriedade da action é “myService” e vai procurar por uma implementação de Service com o nome “myService”.
A única desvantagem pequena disso é que se vc tem duas classes com duas propriedades com nomes diferentes, vc vai precisar definir o IOC duas vezes:
ioc("myService", ServiceImpl.class, APPLICATION);
ioc("myServiceAgain", ServiceImpl.class, APPLICATION);
Usando as boas práticas de organização, o seu serviço pode e deve ter o mesmo nome em todos os lugares que ele aparece na sua aplicação. Caso contrário, ter que definir duas vezes como foi feito acima tb não me parece nada demais…