2010-10-21 15 views
15

Sto imparando Java per 3 mesi e talvolta non riesco a capire lo scopo di utilizzo di qualcosa.per cosa sono utilizzati @Repository e @Autowired. (Primavera)

un argomento era l'iniezione di dipendenza e fagioli primavera ho capito la fine =)

ora ho confuso con le due annotazioni @Autowired e @Repository. Primo cosa significa Autowiring? quindi Perché dovrei usarli e qual è la differenza tra usarli e non usare?

Anche oggi ho provato ad utilizzare la sospensione in un progetto di mvc di primavera e ho dovuto cercare circa 15 (causa di errori di classe non trovati) file jar a causa delle dipendenze di altri file jar usati nel progetto. è necessario che sia così? questo rende l'apprendimento di Java molto difficile per i principianti

grazie ...

+0

Queste annotazioni sono annotazioni a molla, Autowired significa che il contesto di Ioc inietterà automaticamente le dipendenze, se possibile, e il repository credo sia uno stereotipo in modo da poter aggiungere la riscrittura di eccezioni e altri componenti relativi a dataaccess primaverili. Aggiungi il tag primavera al tuo post e potresti ricevere altre risposte! –

risposta

27

@Repository è un'annotazione che segna la classe specifica come un Data Access Object, chiarendo in tal modo il suo ruolo. Altri marcatori della stessa categoria sono @Service e @Controller

@Autowired è un'annotazione con un significato completamente diverso: in pratica dice al contenitore DI di iniettare una dipendenza. Maggiori informazioni presso http://apollo89.com/java/spring-framework-2.5.3/api/org/springframework/beans/factory/annotation/Autowired.html
Modifica Maggiori informazioni presso tutorialpoint
o docs.spring.io

+0

quindi il repository non fornisce alcuna funzionalità, ho ragione? Cosa significa ruolo? per @controller c'è qualcosa che accade quando lo usiamo cosa succede quando usiamo il repository? – mehmet6parmak

+2

effettivamente, rende la classe annotata idonea per la conversione DataAccessException. – Bogdan

+0

@Bogdan FYI: quel collegamento è rotto. – Eldelshell

0

@Autowired e @Repository sono molto 2 concetti diversi. 1. @ Repository: definisce una classe come repository, In generale è possibile utilizzare semplicemente @Component ma per definire in modo specifico, ci sono altre 3 annotazioni come Controller, servizio e repository. Principalmente 2 vantaggi: 1.Se si aver definito (context: component-scan) in servlet.xml per analizzare il pacchetto definito e trovarne uno proprio in primavera. 2. Altri vantaggi si ottengono da primavera come la conversione degli errori di accesso al database, quindi è principalmente definito per l'uso con la classe in cui ci si connette con il database sia con hibernate o jdbc.

@Autowired: iniettare la dipendenza a run-time dalla molla, significa in una classe, autowire un oggetto, e usarlo, quindi questo fagiolo verrà automaticamente effettuato senza definire nel file XML

0

@Autowired e @ Il repository ha scopi diversi da utilizzare.
@Autowired: riguarda l'iniezione di dipendenza, una variabile di riferimento deve essere inserita dall'annotazione @Autowired. Ci deve essere una classe 'bean' definita per iniettare quella particolare variabile di riferimento. Hibernate controllerà le classi annotate Beans o @Component e inserirà la variabile di riferimento @Autowired quando il tipo/nome/costruttore di esso corrisponde.

@Repository: è circa classe DAO in cui si scrive il codice per eseguire operazioni di database, come le query HQL, save()/persistono()/update(), ecc Così come si annotare un @Repository classe, dice hibernate è una classe DAO e la tratta come una classe DAO. Significa che le eccezioni non controllate (generate dai metodi DAO) possono essere convertite in Spring DataAccessException.

Problemi correlati