Injekcija temeljena na XML-u u proljeće

1. Uvod

U ovom osnovnom uputstvu naučit ćemo kako izvesti jednostavnu konfiguraciju graha temeljenu na XML-u s Spring Framework-om.

2. Pregled

Počnimo s dodavanjem ovisnosti Springove knjižnice u pom.xml:

 org.springframework proljeće-kontekst 5.1.4.OBLAŽENJE 

Najnoviju verziju proljetne ovisnosti možete pronaći ovdje.

3. Injekcija ovisnosti - pregled

Ubrizgavanje ovisnosti je tehnika kojom se ovisnosti predmeta isporučuju iz vanjskih spremnika.

Recimo da imamo klasu aplikacije koja ovisi o usluzi koja zapravo upravlja poslovnom logikom:

javna klasa IndexApp {privatna usluga IService; // standardni konstruktori / getteri / postavljači} 

Sad recimo ISusluga je sučelje:

javno sučelje IService {public String serve (); } 

Ovo sučelje može imati više implementacija.

Kratko ćemo pogledati jednu potencijalnu implementaciju:

javna klasa IndexService implementira IService {@Override public String serve () {return "Hello World"; }} 

Ovdje, IndexApp je komponenta visoke razine koja ovisi o tzv. komponenti niske razine ISusluga.

U osnovi razdvajamo IndexApp iz određene provedbe ISusluga koji se mogu razlikovati ovisno o raznim čimbenicima.

4. Injekcija ovisnosti - na djelu

Pogledajmo kako možemo ubrizgati ovisnost.

4.1. Korištenje svojstava

Pogledajmo kako možemo povezati ovisnosti pomoću konfiguracije temeljene na XML-u:

Kao što se može vidjeti, stvaramo primjerak IndexService i dodijelivši mu id. Prema zadanim postavkama grah je jednostruki. Također, stvaramo primjerak IndexApp.

Unutar ovog graha ubrizgavamo drugi grah metodom postavljača.

4.2. Korištenje konstruktora

Umjesto ubrizgavanja graha putem metode postavljača, ovisnost možemo ubrizgati pomoću konstruktora:

4.3. Korištenje Static Factory

Također možemo ubrizgati grah koji je vratila tvornica. Stvorimo jednostavnu tvornicu koja vraća primjerak ISusluga na temelju isporučenog broja:

javna klasa StaticServiceFactory {javna statička IService getNumber (int broj) {// ...}} 

Sada da vidimo kako bismo gore navedenu implementaciju mogli ubrizgati u zrno IndexApp pomoću XML-zasnovane konfiguracije:

U gornjem primjeru nazivamo statički getService metoda pomoću tvornička metoda stvoriti grah s id messageService koju ubrizgavamo IndexApp.

4.4. Korištenjem tvorničke metode

Razmotrimo tvornicu primjera koja vraća instancu ISusluga na temelju isporučenog broja. Ovaj put metoda nije statična:

javna klasa InstanceServiceFactory {public IService getNumber (int number) {// ...}} 

Sada da vidimo kako bismo gore navedenu implementaciju mogli ubrizgati u zrno IndexApp pomoću XML konfiguracije:

U gornjem primjeru zovemo getService metoda na primjerku InstanceServiceFactory koristeći tvornička metoda stvoriti grah s id messageService koju ubrizgavamo IndexApp.

5. Ispitivanje

Evo kako možemo pristupiti konfiguriranom grahu:

@Test public void whenGetBeans_returnsBean () {ApplicationContext applicationContext = new ClassPathXmlApplicationContext ("..."); IndexApp indexApp = applicationContext.getBean ("indexApp", IndexApp.class); assertNotNull (indexApp); } 

6. Zaključak

U ovom smo brzom vodiču ilustrirali primjere kako možemo ubrizgati ovisnost pomoću XML-zasnovane konfiguracije koristeći Spring Framework.

Implementacija ovih primjera može se naći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.