Você pode querer incluir Spring em sua lista de frameworks de injeção de dependência que está considerando. Aqui estão algumas respostas às suas perguntas:
Acoplamento à estrutura
Pico - O Pico tende a desencorajar a injeção de setter, mas fora isso, suas classes não precisam saber sobre o Pico. É apenas a fiação que precisa saber (verdadeiro para todas as estruturas de DI).
Guice - o Guice agora suporta as anotações JSR 330 padrão , então você não precisa mais de anotações específicas do Guice em seu código. Spring também suporta essas anotações padrão. O argumento que os caras do Guice usam é que, sem um processador de anotações do Guice em execução, eles não deveriam ter um impacto se você decidir usar um framework diferente.
Spring - Spring visa permitir que você evite qualquer menção ao framework Spring em seu código. Como eles têm muitos outros ajudantes / utilitários, etc., a tentação de depender do código do Spring é muito forte.
atuação
Pico - Não estou muito familiarizado com as características de velocidade do Pico
Guice - O Guice foi desenhado para ser rápido e a comparação mencionada na referência tem alguns números. Certamente, se a velocidade é uma consideração primária, tanto o uso do Guice quanto a fiação manual deve ser considerada
Primavera - a primavera pode ser lenta. Tem havido trabalho para torná-lo mais rápido e usar a biblioteca JavaConfig deve acelerar as coisas.
Fácil de usar
Pico - Simples de configurar. Pico pode tomar algumas decisões de autowire para você. Não está claro como ele se adapta a projetos muito grandes.
Guice - Simples de configurar, basta adicionar anotações e herdar de AbstractModule para vincular as coisas. Escala bem para grandes projetos, pois a configuração é reduzida ao mínimo.
Spring - relativamente fácil de configurar, mas a maioria dos exemplos usa Spring XML como método de configuração. Os arquivos Spring XML podem se tornar muito grandes e complexos com o tempo e demorar para carregar. Considere o uso de uma combinação de injeção de dependência de mola e manivela para superar isso.
Tamanho da comunidade
Pico - Pequeno
Guice - Médio
Primavera - Grande
Experiência
Pico - Não tenho muita experiência com o Pico, mas não é um framework amplamente utilizado, então será mais difícil encontrar recursos.
Guice - Guice é um framework popular e seu foco na velocidade é bem-vindo quando você tem um grande projeto que está reiniciando muito em desenvolvimento. Tenho uma preocupação com a natureza distribuída da configuração, ou seja, não é fácil ver como todo o nosso aplicativo é montado. É um pouco como AOP a esse respeito.
Spring - geralmente é a minha escolha padrão. Dito isso, o XML pode se tornar complicado e a desaceleração resultante irritante. Muitas vezes acabo usando uma combinação de injeção de dependência artesanal e Spring. Quando você realmente precisa de configuração baseada em XML, Spring XML é muito bom. O Spring também se esforçou para tornar outras estruturas mais amigáveis à injeção de dependência, o que pode ser útil porque eles costumam usar as melhores práticas ao fazer isso (JMS, ORM, OXM, MVC etc.).
Referências