Vkladanie na základe XML na jar
1. Úvod
V tomto základnom výučbe sa naučíme, ako vykonať jednoduchú konfiguráciu fazule založenú na XML pomocou Spring Framework.
2. Prehľad
Začnime pridaním jarnej závislosti od knižnice v pom.xml:
org.springframework jarny kontext 5.1.4.RELEASE
Najnovšiu verziu jarnej závislosti nájdete tu.
3. Injekcia závislostí - prehľad
Vkladanie závislostí je technika, pri ktorej sú závislosti objektu poskytované externými kontajnermi.
Povedzme, že máme triedu aplikácií, ktorá závisí od služby, ktorá skutočne spracováva obchodnú logiku:
verejná trieda IndexApp {súkromná služba IService; // štandardné konštruktory / getre / setre}
Teraz si povedzme IService je rozhranie:
verejné rozhranie IService {public String serve (); }
Toto rozhranie môže mať viac implementácií.
Poďme sa rýchlo pozrieť na jednu potenciálnu implementáciu:
verejná trieda IndexService implementuje IService {@Override public String serve () {return "Hello World"; }}
Tu, IndexApp je komponent na vysokej úrovni, ktorý závisí od tzv. komponentu na nízkej úrovni IService.
V podstate oddeľujeme IndexApp z konkrétnej implementácie IService ktoré sa môžu líšiť v závislosti od rôznych faktorov.
4. Injekcia závislostí - v akcii
Pozrime sa, ako môžeme vložiť závislosť.
4.1. Používanie vlastností
Pozrime sa, ako môžeme prepojiť závislosti pomocou konfigurácie založenej na XML:
Ako je vidieť, vytvárame inštanciu IndexService a priradiť mu id. Štandardne je fazuľa singleton. Tiež vytvárame inštanciu IndexApp.
V rámci tejto fazule vstrekujeme druhú fazuľu pomocou metódy setter.
4.2. Pomocou konštruktora
Namiesto injekcie fazule pomocou metódy setter môžeme závislosť vložiť pomocou konštruktora:
4.3. Používanie statickej továrne
Môžeme tiež vpichnúť fazuľu vrátenú z továrne. Vytvorme jednoduchú továreň, ktorá vráti inštanciu IService na základe dodaného počtu:
verejná trieda StaticServiceFactory {verejná statická IService getNumber (int číslo) {// ...}}
Teraz sa pozrime, ako by sme mohli použiť vyššie uvedenú implementáciu na vpichnutie fazule IndexApp pomocou konfigurácie založenej na XML:
Vo vyššie uvedenom príklade voláme statický getService metóda pomocou továrenská metóda vytvoriť fazuľa s id messageService do ktorej vstrekujeme IndexApp.
4.4. Pomocou továrenskej metódy
Uvažujme o továrni na inštancie, ktorá vráti inštanciu IService na základe dodaného počtu. Táto metóda nie je tentokrát statická:
verejná trieda InstanceServiceFactory {verejná IService getNumber (int číslo) {// ...}}
Teraz sa pozrime, ako by sme mohli použiť vyššie uvedenú implementáciu na vpichnutie fazule IndexApp pomocou konfigurácie XML:
Vo vyššie uvedenom príklade voláme getService metóda na príklade InstanceServiceFactory použitím továrenská metóda vytvoriť fazuľa s id messageService do ktorého vstrekujeme IndexApp.
5. Testovanie
Takto môžeme pristupovať k nakonfigurovaným fazuľkám:
@Test public void whenGetBeans_returnsBean () {ApplicationContext applicationContext = new ClassPathXmlApplicationContext ("..."); IndexApp indexApp = applicationContext.getBean ("indexApp", IndexApp.class); assertNotNull (indexApp); }
6. Záver
V tomto rýchlom výučbe sme ilustrovali príklady toho, ako môžeme vložiť závislosť pomocou konfigurácie založenej na XML pomocou Spring Framework.
Implementáciu týchto príkladov možno nájsť v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a bežať tak, ako je.