XML-alapú injekció tavasszal

1. Bemutatkozás

Ebben az alapvető oktatóanyagban megtanuljuk, hogyan lehet egyszerű XML-alapú babkonfigurációt végezni a Spring Framework segítségével.

2. Áttekintés

Kezdjük azzal, hogy hozzáadjuk Spring könyvtár függőségét a pom.xml:

 org.springframework tavaszi kontextus 5.1.4. KIADÁS 

A tavaszi függőség legújabb verziója itt található.

3. Függőségi injekció - áttekintés

A függőség-injektálás olyan technika, amelynek segítségével egy tárgy függőségeit külső tartályok biztosítják.

Tegyük fel, hogy van egy alkalmazási osztályunk, amely az üzleti logikát ténylegesen kezelő szolgáltatástól függ:

public class IndexApp {privát IService szolgáltatás; // szabványos kivitelezők / szerelők / beállítók} 

Most mondjuk IService egy interfész:

nyilvános felület IService {public String serve (); } 

Ennek az interfésznek több megvalósítása is lehet.

Vessünk egy gyors pillantást egy lehetséges megvalósításra:

public class IndexService megvalósítja az IService {@Orride public String serve () {return "Hello World"; }} 

Itt, IndexApp egy magas szintű összetevő, amely az úgynevezett alacsony szintű összetevőtől függ IService.

Lényegében szétválasztjuk IndexApp az IService amely a különféle tényezők függvényében változhat.

4. Függőségi injekció - működés közben

Lássuk, hogyan tudunk injektálni egy függőséget.

4.1. A Tulajdonságok használata

Nézzük meg, hogyan kapcsolhatjuk össze a függőségeket egy XML-alapú konfiguráció segítségével:

Mint látható, létrehozunk egy példányát IndexService és azonosítót rendel hozzá. Alapértelmezés szerint a bab egyszemélyes. Emellett létrehozunk egy példányt IndexApp.

Ezen a babon belül szetter módszerrel injektáljuk a másik babot.

4.2. A Constructor használata

Ahelyett, hogy babot adunk be a szetter módszerrel, a konstruktort használva beinjektálhatjuk a függőséget:

4.3. A Static Factory használata

Befecskendezhetünk egy gyár által visszaküldött babot is. Hozzunk létre egy egyszerű gyárat, amely visszaadja a példányát IService a megadott szám alapján:

public class StaticServiceFactory {public static IService getNumber (int szám) {// ...}} 

Most nézzük meg, hogyan használhatnánk a fenti megvalósítást bab bejuttatására IndexApp XML-alapú konfiguráció használata:

A fenti példában statikusnak hívjuk getService módszer segítségével gyári módszer hogy babot hozzon létre azonosítóval messageService amibe beadunk IndexApp.

4.4. Gyári módszerrel

Vegyünk egy példánygyárat, amely egy példányt ad vissza IService a megadott szám alapján. Ezúttal a módszer nem statikus:

public class instanceServiceFactory {public IService getNumber (int szám) {// ...}} 

Most nézzük meg, hogyan használhatnánk a fenti megvalósítást bab bejuttatására IndexApp XML konfigurációval:

A fenti példában a getService metódus a InstanceServiceFactory felhasználásával gyári módszer babot hozni létre azonosítóval messageService amelyet beinjekciózunk IndexApp.

5. Tesztelés

Így érhetjük el a konfigurált babokat:

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

6. Következtetés

Ebben a gyors bemutatóban példákat illusztráltunk arra, hogyan tudunk injektálni a függőséget az XML alapú konfiguráció segítségével a Spring Framework segítségével.

Ezeknek a példáknak a megvalósítása megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.


$config[zx-auto] not found$config[zx-overlay] not found