Il y a 16 ans -
Temps de lecture 4 minutes
Configuration en Annotations Java ou en XML ?
L’arrivée de Guice dans le monde des frameworks de dependency injection a entraîné pas mal de questionnements. Je n’échappe pas à la règle !
Google a adopté dans Guice la configuration tout en Java : tout ce fait à base d’annotations et de l’API. De fait, il n’y a plus de fichier de configuration XML.
C’est encore un des reproches que l’on entend sur Spring : on déporte beaucoup de choses dans un fichier XML qui ne compile pas et pour lequel on n’est pas assisté.
Dans le même ordre d’idée, Les nouvelles annotations créées avec JPA (Java Persistence API) changent aussi notre façon de configurer Hibernate. Avant, on configurait tout dans le bon vieux hibernate.cfg.xml, maintenant on a la possibilité de le faire avec les annotations.
Maintenant que nous avons le choix : quelle solution doit-on préférer ? Java ou XML ?
Configuration en Java (API + Annotations)
Pour
- Compilation (vérification des liens et de l’existence des classes par le compilateur)
- Code-completion
- Simplicité et concision (par rapport au XML)
- Refactoring simple
Contre
- Tout changement entraîne une recompilation
- Configuration répartie dans le code
Si, plus tard je veux finalement changer l’exposition de tous mes services vers une exposition RMI / IIOP, il faut que je parcours tout le code (avec les risques d’omission) pour remplacer l’annotation.
Configuration en XML
Pour
- Souplesse : Permet d’effectuer des changements sans impact sur le code (et sans recompilation)
Mes deux services communique en appel Java (intra JVM) et je veux maintenant qu’il communique en RMI.
Je n’ai qu’à modifier le fichier de configuration de Spring pour changer l’exposition du service et changer l’injection pour l’appelant.
- Pas de couplage fort du code avec le framework
- Configuration centralisée
Contre
- Perte de lisibilité
- Source d’erreur
Lourdeur et perte de productivité (beaucoup de choses à écrire en XML)
Il n’y a pas ou peu d’assistance à l’écriture du XML, notamment quand on doit renseigner des références à des éléments du source Java (noms de classe Java, de méthodes, etc).
- Refactoring manuel (Search & Replace)
En synthèse
Configuration en Java | Configuration en XML | |
Les plus |
|
|
Les moins |
|
|
Commentaire
2 réponses pour " Configuration en Annotations Java ou en XML ? "
Comments are closed.
Published by Benoit Moussaud , Il y a 16 ans
Spring a réagit très vite : le projet Spring JavaConfig [http://springframework.org/javaconfig] va bientot sortir en version 1.0, la version 1.0M2 est déjà disponible [http://www.springframework.org/node/455]
Published by Hassan ZARYOH , Il y a 13 ans
Un mixte des deux me semble un bon compromis. Notamment dans le cas de Spring. Annotations pour les données statiques, fichier XML pour les données plus dynamiques. Si on a besoin de changer l’implémentation, mieux vaut utiliser les fichiers XML que les annotations @Service … Enfin les outils type Spring IDE apportent une aide précieuse à l’écriture des fichiers XML