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.