web-dev-qa-db-fra.com

à quoi servent @Repository et @Autowired. (Printemps)

J'apprends Java depuis 3 mois et parfois Je ne peux pas comprendre le but de l'utilisation de quelque chose.

un sujet était l'injection de dépendance et les haricots de printemps, j'ai compris le enfin =) 

maintenant, j'ai confondu avec les deux annotations @Autowired et @Repository. Première Que signifie Autowiring? alors Pourquoi devrais-je les utiliser et quelle est la différence entre les utiliser et ne pas les utiliser?

De plus, aujourd’hui, j’ai essayé d’utiliser hibernate dans un projet mvc de printemps et j’ai dû chercher environ 15 fichiers jar (cause des erreurs de classe non trouvées). Est-ce que cela devait être comme ça? cela rend l'apprentissage de Java très difficile pour les débutants

merci...

16
mehmet6parmak

@Repository est une annotation qui marque la classe spécifique en tant qu'objet d'accès aux données, clarifiant ainsi son rôle. Les autres marqueurs de la même catégorie sont @Service et @Controller.

@Autowired est une annotation dont le sens est complètement différent: il indique au conteneur DI d'injecter une dépendance. Plus d'infos sur http://apollo89.com/Java/spring-framework-2.5.3/api/org/springframework/beans/factory/annotation/Autowired.html
Éditer Plus d'infos sur tutorialpoint
ou docs.spring.io

32
Bogdan

Les deux annotations ont des finalités différentes.

@Autowired: Identique à <bean="xyz" autowire="byType"> que vous définissez dans le fichier de configuration. La variable de référence (dépendance) annotée avec @Autowired sera injectée par le conteneur Spring comme tout @Bean correspondant trouvé dans la classe @Configuration.
De plus, les classes annotées avec @Component, @Service, @Repository sont également considérées comme des beans, de sorte que leurs objets sont injectés dans les dépendances correspondantes. Le conteneur Spring analyse les beans des classes que vous avez mentionnées comme "composant-scan" ou @ComponentScan ("xyz").

@Repository: Ceci est également une annotation du cadre-ressort. Lorsque vous annotez une classe @Repository, le conteneur Spring comprend qu'il s'agit d'une classe DAO et traduit toutes les exceptions non contrôlées (levées à partir de méthodes DAO) en Spring DataAccessException. La classe DAO est la classe dans laquelle vous écrivez des méthodes pour effectuer des opérations sur la base de données.

5
Arun Raaj

@Autowired et @Repository sont deux concepts très différents. 1. @ Repository: Ceci définit une classe comme étant un référentiel. En général, vous pouvez utiliser simplement @Component mais pour définir plus précisément, il existe 3 autres annotations telles que Contrôleur, service et référentiel. Principalement 2 avantages: 1.Si vous avez défini (contexte: composant-scan) dans servlet.xml pour analyser le package défini et le retrouver au printemps. 2 Plus d'avantages que vous obtenez à partir du printemps, comme la traduction d'erreur d'accès à la base de données, il est donc principalement défini pour une utilisation avec la classe dans laquelle vous vous connectez à la base de données avec hibernate ou jdbc.

@Autowired: pour injecter une dépendance au moment de l'exécution au printemps, signifie dans une classe, autoriser et utiliser un objet, afin que ce bean soit automatiquement créé sans être défini dans un fichier xml

0
Karan guptA