Tout d'abord il faut préciser une petite chose : le périmètre fonctionnel des deux frameworks est totalement différent :
Spring est un framework qui entend couvrir l'ensemble des problématiques allant de la simple application CRUD à l'application d'entreprise :
- Injection de dépendances (Spring Core)
- Programmation orientée aspect, Transactions déclaratives (Spring Core & Spring AOP)
- Couche d'abstraction des framework ORM, proposant des Templates (méthodes CRUD, Finders,etc...) et exceptions typées selon le code retour de la base de données (Spring DAO)
- Composants permettant l'utilisation de JMS, JMX, WebServices, Scheduling (Spring JEE)
- Technologie de présentation MVC (Spring Web, Spring Web Flow...)
Google Guice couvre principalement l'injection de dépendances (également l'AOP, mais cela reste assez basique). C'est donc sur l'IoC qu'il est opportun d'effectuer une comparaison avec Spring.
Google Guice s'appuie principalement sur les fonctionnalités de JAVA 5, et plus précisément sur les annotations pour la configuration.
Les principaux reproches fait à Spring concernent la configuration, principalement sur les fichiers XML qui deviennent complexes et difficiles à maintenir dès lors que l'application devient conséquente. Même avec la version 2, sortie tout récemment, Spring n'a pas véritablement simplifié cette configuration qui reste basée sur du XML.
Lire la suite