Útmutató a tavaszi babgyárhoz

1. Bemutatkozás

Ez a cikk a következőkre fog összpontosítani a Spring BeanFactory API felfedezése.

A BeanFactory interfész egyszerű, ugyanakkor rugalmas konfigurációs mechanizmust kínál bármilyen természetű objektumok kezelésére a Spring IoC tárolón keresztül. Vessünk egy pillantást néhány alapra, mielőtt elmélyülnénk ebbe a központi Spring API-ba.

2. Alapok - Bab és konténerek

Egyszerűen fogalmazva, a bab azok a java objektumok, amelyek a Spring alkalmazás gerincét alkotják, és amelyeket a Spring IoC tároló kezel. Azon kívül, hogy a konténer kezeli, nincs semmi különlegesség a babban (minden más szempontból ez az alkalmazás számos objektuma).

A tavaszi tartály feladata a bab példányosítása, konfigurálása és összeszerelése. A tároló az alkalmazáshoz definiált konfigurációs metaadatok elolvasásával kap információt arról, hogy mely objektumokat kell példányosítani, konfigurálni és kezelni.

3. Maven-függőségek

Adjuk hozzá a szükséges Maven-függőséget a pom.xml fájl. A BeanFactory felállításához a Spring Beans függőséget fogjuk használni:

 org.springframework spring-bab 5.2.8.FELHASZNÁLÁS 

4. A BeanFactory Felület

Érdekes kezdeni azzal, hogy megnézzük a felület definícióját org.springframework.beans.factory csomagot, és itt tárgyalja meg néhány fontos API-ját.

4.1. A getBean () API-k

Különböző változatai getBean () metódus a megadott bab példányát adja vissza, amely lehet megosztott vagy független az alkalmazásban.

4.2. A tartalmazBean () API

Ez a módszer megerősíti, hogy ez a babgyár tartalmaz-e egy babot a megadott névvel. Pontosabban megerősíti, ha a getBean (java.lang.String) képes a bab nevű példány megszerzésére.

4.3. A isSingleton () API

A isSingleton Az API segítségével lekérdezhető, ha ez a bab megosztott szingulett. Ez az, ha getBean (java.lang.String) mindig ugyanazt a példányt adja vissza.

4.4. A isPrototype () API

Ez az API megerősíti, ha getBean (java.lang.String) független példányokat ad vissza - a babot a prototípus hatókörével konfigurálva, vagy sem.

Fontos megjegyezni, hogy ez a módszer visszatér hamis nem egyértelműen jelez egy szingulett objektumot. Nem független példányokat jelez, amelyek más hatóköröknek is megfelelhetnek.

Használnunk kell a isSingleton (java.lang.String) művelet a megosztott egyedi példány kifejezett ellenőrzésére.

4.5. Egyéb API-k

Amíg a isTypeMatch (karakterlánc neve, osztály targetType) metódus ellenőrzi, hogy a megadott nevű bab megfelel-e a megadott típusnak, getType (karakterlánc neve) hasznos a bab típusának az adott névvel való azonosításában.

Végül, getAliases (karakterlánc neve) adja vissza az adott babnév álneveit, ha vannak ilyenek.

5. BeanFactory API

BeanFactory rendelkezik babdefiníciókkal és példányosítja azokat, amikor az ügyfélalkalmazás kéri - ez azt jelenti:

  • Gondoskodik a bab életciklusáról azáltal, hogy példázza azt, és megfelelő megsemmisítési módszereket hív fel
  • Képes asszociációkat létrehozni a függő objektumok között, miközben példányosítja őket
  • Fontos rámutatni erre BeanFactory nem támogatja az Annotation-alapú függőségi injekciót, míg ApplicationContext, a BeanFactory egy halmaza igen

Olvassa el az Alkalmazáskörnyezet című cikket, hogy megtudja, mire képes extra.

6. A bab meghatározása

Határozzunk meg egy egyszerű babot:

public class Alkalmazott {private String név; privát int kor; // szabványos kivitelezők, mérőeszközök és beállítók}

7. A BeanFactory XML-rel

Beállíthatjuk a BeanFactory XML-rel. Hozzunk létre egy fájlt babgyár-példa.xml:

Ne feledje, hogy létrehoztunk egy álnevet is a munkavállaló bab.

8. BeanFactory val vel ClassPathResource

ClassPathResource a org.springframework.core.io csomag. Futtassunk egy gyors tesztet és inicializáljuk XmlBeanFactory felhasználásával ClassPathResource az alábbiak szerint:

public class BeanFactoryWithClassPathResourceTest {@Test public void createBeanFactoryAndCheckEmployeeBean () {Resource res = new ClassPathResource ("beanfactory-example.xml"); BeanFactory gyár = new XmlBeanFactory (res); Employee emp = (Employee) gyár.getBean ("alkalmazott"); assertTrue (gyár.isSingleton ("alkalmazott")); assertTrue (gyár.getBean ("alkalmazott") Alkalmazott példánya); assertTrue (factory.isTypeMatch ("alkalmazott", Employee.class)); assertTrue (gyár.getAliases ("alkalmazott"). hossz> 0); }}

9. Következtetés

Ebben a gyors cikkben megismerhettük a tavasz főbb módszereit BeanFactory Az API ajánlatok és egy példa a konfiguráció és annak használatának szemléltetésére.

Az ezeket a példákat alátámasztó kód az egész elérhető a GitHubon.