Spring – IoC konténerek

author
3 minutes, 59 seconds Read

A Spring IoC konténer a Spring keretrendszer központi eleme. A konténer létrehozza az objektumokat, összeköti őket, konfigurálja őket, és kezeli a teljes életciklusukat a létrehozástól a megsemmisítésig. A Spring konténer a függőségi injektálást (DI) használja az alkalmazást alkotó komponensek kezelésére.

A Spring a következő kétféle konténert biztosítja.

  1. BeanFactory konténer
  2. ApplicationContext konténer

Bővebben: Inversion of Control and Dependency Injection

BeanFactory

A BeanFactory lényegében nem más, mint egy fejlett gyár interfésze, amely képes a különböző babok és függőségeik nyilvántartását fenntartani.

A BeanFactory lehetővé teszi számunkra, hogy beandefiníciókat olvassunk és elérjük azokat a bean factory segítségével.

1.1. Hogyan hozzunk létre BeanFactory

Ha csak a BeanFactory-t használjuk, akkor létrehozhatunk egyet, és beolvashatunk néhány babdefiníciót XML formátumban az alábbiak szerint:

A babgyár létrehozásának egyéb módjai az alábbiak:

Lényegében ennyi. A getBean(String) segítségével lekérhetjük a babjaink példányait; a BeanFactory kliensoldali nézete meglepően egyszerű.

1.2. BeanFactory metódusok

A BeanFactory interfésznek mindössze hat metódusa van, amelyeket az ügyfélkód meghívhat:

  1. boolean containsBean(String): igazat ad vissza, ha a BeanFactory tartalmaz olyan babdefiníciót vagy babpéldányt, amely megfelel a megadott névnek
  2. Object getBean(String): visszaadja a megadott név alatt regisztrált bab egy példányát. Attól függően, hogy a babot a BeanFactory konfigurációja hogyan határozta meg, vagy egy singleton és így megosztott példányt, vagy egy újonnan létrehozott babot ad vissza. A BeansException akkor kerül dobásra, ha vagy a babot nem sikerült megtalálni (ebben az esetben NoSuchBeanDefinitionException lesz), vagy a bab instanciálása és előkészítése közben kivétel történt
  3. Object getBean(String, Class): Visszaad egy babot, amely a megadott név alatt van regisztrálva. A visszaadott bean a megadott Class-ra lesz leképezve. Ha a babot nem lehetett leképezni, akkor a megfelelő kivételeket dobja (BeanNotOfRequiredTypeException). Továbbá a getBean(String) metódus minden szabálya érvényes (lásd fentebb)
  4. Class getType(String name): Visszaadja a Class babot a megadott névvel. Ha nem sikerült az adott névnek megfelelő babot találni, akkor egy NoSuchBeanDefinitionException-t dob
  5. boolean isSingleton(String): Meghatározza, hogy az adott név alatt regisztrált babdefiníció vagy babpéldány singleton-e vagy sem. Ha az adott névnek megfelelő babot nem sikerült megtalálni, akkor NoSuchBeanDefinitionException dob
  6. String getAliases(String): Visszaadja az adott babnév aliasait, ha a babdefinícióban definiálták őket

ApplicationContext

ApplicationContext konténer több vállalatspecifikus funkciót ad hozzá, például a szöveges üzenetek feloldásának képességét egy tulajdonságfájlból és az alkalmazási események közzétételének képességét az érdekelt eseményhallgatók számára. Ezt a konténert az org.springframework.context.ApplicationContext interfész definiálja.

Az ApplicationContext konténer tartalmazza a BeanFactory konténer összes funkcionalitását, ezért általában a BeanFactory helyett ajánlott. BeanFactory továbbra is használható olyan könnyű alkalmazásokhoz, mint a mobil eszközök vagy az applet alapú alkalmazások, ahol az adatmennyiség és a sebesség jelentős.

2.1. A ContextContextContent egy olyan eszköz, amely az adatmennyiség és a sebesség szempontjából jelentős. Az ApplicationContext típusai

A leggyakrabban használt ApplicationContext megvalósítások a következők:

  1. FileSystemXmlApplicationContext – Ez a tároló egy XML-fájlból tölti be a babok definícióit. Itt meg kell adni a konstruktornak az XML babkonfigurációs fájl teljes elérési útját.
  2. ClassPathXmlApplicationContext – Ez a tároló a babok definícióit egy XML fájlból tölti be. Itt nem kell megadni az XML-fájl teljes elérési útját, de a CLASSPATH-ot megfelelően kell beállítani, mert ez a konténer a CLASSPATH-ban fogja keresni a babkonfigurációs XML-fájlt.
  3. WebXmlApplicationContext – Ez a konténer egy webes alkalmazásból tölti be az összes bab definícióit tartalmazó XML-fájlt.

2.2. Az XML-fájlt a webes alkalmazásból tölti be. ApplicationContext létrehozásának módja

Az alkalmazáskontextus példányosításának mintakódja így néz ki.

Similar Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.