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.