Je développe une application web utilisant spring-mvc.
Les stéréotypes @Controller, @Service et @Repository sont désormais disponibles.
J'ai trouvé @Controller particulièrement utile, spécialement parce que j'utilise
<context:component-scan base-package="my.cool.controller"/>
Maintenant, en ce qui concerne @Service et @Repository, jusqu'à présent, ressemble à
Donc, à part les meilleures exceptions, un autre avantage? L'annotation des classes a-t-elle un impact sur les performances?
Explication des stéréotypes:
@Service
- Annotez toutes vos classes de service avec @Service. Cette couche connaît l'unité de travail. Toute votre logique métier sera dans les classes de service. Généralement, les méthodes de couche de service sont couvertes par la transaction. Vous pouvez effectuer plusieurs appels DAO à partir de la méthode de service, si une transaction échoue, toutes les transactions doivent être annulées.@Repository
- Annotez toutes vos classes DAO avec @Repository. Toute votre logique d'accès à la base de données doit être dans des classes DAO.@Component
- Annotez vos autres composants (par exemple REST classes de ressources) avec le stéréotype du composant.@Autowired
- Laissez Spring câbler automatiquement d'autres beans dans vos classes en utilisant l'annotation @Autowired.@Component
est un stéréotype générique pour tout composant géré par Spring. @Repository
, @Service
, et @Controller
sont des spécialisations de @Component
pour des cas d'utilisation plus spécifiques, par exemple, dans les couches de persistance, de service et de présentation, respectivement.
Raisons de les utiliser:
bean
définitions dans un fichier xml contextuel. Au lieu de cela, annotez les classes et utilisez-les par câblage automatique.Maintenant, l'impact sur les performances de l'utilisation des beans et des annotations xml contextuels est le même. L'analyse des composants est un peu plus chère (lorsque vous recherchez @Service, @Component). Les annotations sont "analysées" avec réflexion, le xml - avec un analyseur xml. Mais, comme vous l'avez dit, c'est l'heure du démarrage - cela n'arrive qu'une seule fois. Et sur une machine modérée, cela démarre assez rapidement, même avec des annotations.
L'analyse des composants vous évite de définir manuellement chaque bean via xml ou Java.
Plusieurs types stéréo sont là pour définir des couches telles que la couche de service, la couche de données, etc.