A BeanNameAware és a BeanFactoryAware interfészek tavasszal

1. Áttekintés

Ebben a gyors bemutatóban a következőkre fogunk összpontosítani BeanNameAware és BeanFactoryAware interfészek, a tavaszi keretben.

Az egyes felületeket külön leírjuk a használatuk előnyeivel és hátrányaival.

2. Tudatában Felület

Mindkét BeanNameAware és BeanFactoryAware a org.springframework.beans.factory.Aware root marker felület. Ez szetter-injekció segítségével objektumot kap az alkalmazáskörnyezet indításakor.

A Tudatában Az interfész a visszahívás, a hallgató és a megfigyelő tervezési keveréke. Ez azt jelzi, hogy a babot jogosult a Spring tároló értesíteni a visszahívási módszerekkel.

3. BeanNameAware

BeanNameAware tudatossá teszi az objektumot a tárolóban megadott babnévvel.

Nézzünk meg egy példát:

public class MyBeanName implementálja a BeanNameAware {@Orride public void setBeanName (String beanName) {System.out.println (beanName); }}

A babnév tulajdonság a tavaszi tárolóban regisztrált babazonosítót jelenti. Megvalósításunk során egyszerűen megjelenítjük a bab nevét.

Ezután regisztráljunk egy ilyen típusú babot a Spring konfigurációs osztályba:

@Configuration public class Config {@Bean (name = "myCustomBeanName") public MyBeanName getMyBeanName () {return new MyBeanName (); }}

Itt kifejezetten nevet rendeltünk a nevünkhöz MyBeanName osztály a @Bean (név = „MyCustomBeanName”) vonal.

Most elindíthatjuk az alkalmazás környezetét, és megszerezhetjük belőle a babot:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (Config.class); MyBeanName myBeanName = context.getBean (SajátBabNév.osztály);

Ahogy várjuk, a setBeanName módszer kinyomtatja „MyCustomBeanName”.

Ha eltávolítjuk a név = „…” kód a @Bab ebben az esetben a konténer hozzárendel getMyBeanName () metódus neve a babba. Tehát a kimenet az lesz „GetMyBeanName”.

4. BeanFactoryAware

BeanFactoryAware az injekció beadására szolgál BeanFactory tárgy. Így hozzáférünk a BeanFactory amely létrehozta az objektumot.

Itt van egy példa a MyBeanFactory osztály:

public class MyBeanFactory megvalósítja a BeanFactoryAware {private BeanFactory beanFactory; @Orride public void setBeanFactory (BeanFactory beanFactory) dobja a BeansException {this.beanFactory = beanFactory; } public void getMyBeanName () {MyBeanName myBeanName = beanFactory.getBean (MyBeanName.class); System.out.println (beanFactory.isSingleton ("myCustomBeanName")); }}

A segítségével setBeanFactory () módszerrel hozzárendeljük a BeanFactory hivatkozás az IoC tárolóból a beanFactory tulajdonság.

Ezt követően közvetlenül használhatjuk, mint a getMyBeanName () funkció.

Inicializáljuk a MyBeanFactory és felhívja a getMyBeanName () módszer:

MyBeanFactory myBeanFactory = context.getBean (MyBeanFactory.class); myBeanFactory.getMyBeanName ();

Amint azt már példányosítottuk a MyBeanName osztály az előző példában, a Spring itt hívja meg a meglévő példányt.

A beanFactory.isSingleton („myCustomBeanName”) vonal igazolja.

5. Mikor kell használni?

A BeanNameAware lehet, hogy naplózási vagy huzalozási célból megszerzi a bab nevet. A BeanFactoryAware ez lehet az a képesség, hogy az örökölt kódból származó tavaszi babot felhasználják.

A legtöbb esetben kerülnünk kell a Tudatában interfészek, hacsak nincs szükségünk rájuk. Ezen interfészek megvalósítása összekapcsolja a kódot a tavaszi keretrendszerrel.

6. Következtetés

Ebben az írásban megtudtuk a BeanNameAware és BeanFactoryAware interfészeket és azok gyakorlati használatát.

Szokás szerint a cikk teljes kódja elérhető a GitHubon.