English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Durante l'uso della scansione dei componenti, è necessario specificare il percorso di scansione nella configurazione XML
<context:component-scan back-package="yangjq.test">
L'istanza del contenitore di Spring scansiona tutti i componenti delle classi nel pacchetto yangjq.test e nei suoi sotto-pacchetti.
Solo quando i componenti delle classi sono definiti con le seguenti annotazioni, queste classi di componenti vengono scansionate nel contenitore di Spring
- @Component annotazione universale
- @Name annotazione universale
- @Repository annotazione componente di livello di persistenza
- @Service annotazione componente di livello di business
- @Controller annotazione componente di livello di controllo
Nominazione
Il processo di scansione dei componenti genera un valore di id predefinito (nome della classe in minuscolo con iniziale minuscola), questo valore di id può anche essere personalizzato nell'annotazione, ad esempio:
//Questo è l'id predefinito, valore OracleUserDao @Repository public class OracleUserDao implements UserDao{ } //Questo è un id personalizzato, valore loginService @Service("loginService") public class UserService{ }
Ambito del componente
I componenti gestiti da Spring hanno di default l'ambito "singleton", se necessario un altro ambito, si può usare l'annotazione @Scope, è sufficiente fornire il nome dell'ambito nell'annotazione.
@Scope("prototype") @Repository public class OracleUserDao implements UserDao{ }
inizializzazione e distruzione
@PostConstruct e @PreDestroy annotazioni segnano i metodi di callback di inizializzazione e distruzione, ad esempio:
public class ExampleBean{ @PostConstruct public void init(){ //.......Inizializzazione } @PreDestroy public void destroy(){ //........Distruzione } }
Per le annotazioni di Bean con relazioni di iniezione di dipendenza
Può utilizzare uno dei seguenti per implementare l'iniezione di dipendenza.
- @Resource
- @AutoWired/@Qualifier
- @Inject/@Named
Di solito si utilizza @Resource molto spesso, quindi parliamo di @Resource, gli altri possono cercare ulteriori informazioni quando li utilizzano.
L'annotazione @Resource può essere utilizzata davanti alla definizione del campo o del metodo setter, per impostazione predefinita viene effettuata prima l'iniezione per nome, quindi per tipo.
public class UserSerivce{ //@Resource Questo viene utilizzato nella definizione del campo private UserDao userDao; @Resource // Questo viene utilizzato davanti al metodo setter public void setUserDao(UserDao dao){ this.UserDao = dao; } }
Quando si verificano più corrispondenze Bean, l'iniezione può generare un errore, è possibile specificare esplicitamente il nome, ad esempio @Resource(name = "exampleDao").
Sommario
Questo è tutto il contenuto dettagliato dell'articolo su come effettuare la scansione dei componenti basata su annotazioni, speriamo che sia utile a tutti. Gli amici interessati possono continuare a consultare altre sezioni correlate di questo sito, e sono benvenuti i commenti per eventuali miglioramenti. Grazie per il supporto degli amici a questo sito!
Dichiarazione: il contenuto di questo articolo è stato prelevato da Internet, è di proprietà del rispettivo autore, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una email a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema, fornendo prove pertinenti. Una volta verificata la violazione, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.