J'étais également sceptique à propos des annotations, mais les voyant, ils peuvent être une grande chose. Ils peuvent eux aussi être utilisés.
La principale chose à retenir à propos des annotations, c'est qu'ils sont statiques. Ils ne peuvent pas changer au moment de l'exécution. Toute autre méthode de configuration (xml, auto-description dans le code, peu importe) ne souffre pas de cette. J'ai vu des gens ici ont DONC des problèmes avec le Printemps, en termes d'avoir un environnement de test sur l'injection de configurations de test, et d'avoir à déroulant à XML pour le faire.
XML n'est pas polymorphe, héréditaires ou à autre chose, de sorte qu'il n'est pas un pas en arrière en ce sens.
L'avantage d'annotations, c'est qu'il peut vous donner plus de vérification statique sur votre configuration et vous pouvez éviter beaucoup de commentaires et de difficultés de coordination dans les configurations XML (essentiellement le maintien des choses à SEC).
Tout comme XML, les Annotations peuvent être plus utilisé. Le point principal est d'équilibrer les besoins et les avantages de chacun. Les Annotations, au point qu'ils vous donnent de moins verbeux et sèche-linge code, sont un outil à effet de levier.
EDIT: Concernant le commentaire sur une annotation remplacement d'une interface ou une classe abstraite, je pense que cela peut être raisonnable dans le cadre des limites. Dans un cadre destiné à être utilisé par des centaines, si pas des milliers de projets, d'avoir une interface ou une classe de base peut vraiment sertir les choses (en particulier d'une classe de base, mais si vous pouvez le faire avec des annotations, il n'y a aucune raison que vous ne pouvait pas le faire avec une interface.
Envisager JUnit4. Avant, il fallait s'étend une classe de base qui a un programme d'installation et le démontage de la méthode. De mon point de vue, il n'a pas vraiment d'importance si ceux qui avaient été sur une interface ou une classe de base. Maintenant, j'ai un tout autre projet avec sa propre hiérarchie d'héritage, et ils ont tous de l'honneur cette méthode. Tout d'abord, ils ne peuvent pas avoir leur propre conflit noms de méthode (pas une grosse affaire dans un cadre de test, mais vous avez mon point). Deuxième de tous, vous avez la chaîne de l'appel à super tout le chemin vers le bas, parce que toutes les méthodes doivent être couplés.
Maintenant, avec JUnit4, vous pouvez avoir différents @Avant les méthodes dans des classes différentes dans la hiérarchie et ils peuvent être indépendants les uns des autres. Il n'est pas aussi SEC pour ce faire, sans annotations.
Du point de vue des développeurs de JUnit, c'est une catastrophe. Beaucoup mieux d'avoir un type défini que vous pouvez appeler à l'installation et le démontage sur le. Mais un cadre qui n'existe pas, pour la commodité du cadre de développeur, il existe pour la commodité du cadre de travail de l'utilisateur.
Tout cela s'applique si votre code n'a pas besoin de se soucier du type (qui est, dans votre exemple, rien ne serait tous vraiment utiliser un type de Contrôleur de toute façon). Ensuite, on pourrait même dire que la mise en œuvre du cadre de l'interface est plus perméable que de mettre sur une annotation.
Si, toutefois, vous allez écrire le code pour lire cette annotation dans votre propre projet, exécuter loin.