Hogyan lehet az összes tavasszal kezelt babot beszerezni?
1. Áttekintés
Ebben a cikkben különböző technikákat fogunk megvizsgálni az összes tavasszal kezelt bab konténer nélküli megjelenítéséhez.
2. Az IoC konténere
A bab a Spring által kezelt alkalmazás alapja; minden bab a NOB konténerrel rendelkezik, amely felelős életciklusuk kezeléséért.
Kétféleképpen kaphatunk listát az összes babról ebben a tartályban:
- Használva ListableBeanFactory felület
- Rugós indítószerkezet használata
3. Használata ListableBeanFactory Felület
A ListableBeanFactory felület biztosítja getBeanDefinitionNames () módszer amely az ebben a gyárban definiált összes bab nevét adja vissza. Ezt a felületet az összes babgyár valósítja meg, amelyek előre betöltik a babdefinícióikat, hogy felsorolják az összes babpéldányukat.
Az összes ismert alfelület és annak megvalósítási osztályainak listáját a hivatalos dokumentációban találja meg.
Ebben a példában egy Spring Boot alkalmazást fogunk használni.
Először készítünk néhány tavaszi babot. Hozzunk létre egy egyszerű rugóvezérlőt FooController:
@Controller public class FooController {@Autowired private FooService fooService; @RequestMapping (value = "/ displayallbeans") public String getHeaderAndBody (Térkép modell) {model.put ("header", fooService.getHeader ()); model.put ("message", fooService.getBody ()); return "displayallbeans"; }}
Ez a vezérlő egy másik tavaszi babtól függ FooService:
@Service public class FooService {public String getHeader () {return "Display All Beans"; } public String getBody () {return "Ez egy példa alkalmazás, amely az összes babot" + "megjeleníti a Spring IoC tárolóban a ListableBeanFactory" + "és a Spring Boot Actuators használatával."; }}
Vegye figyelembe, hogy itt két különböző babot hoztunk létre:
- fooController
- fooService
Az alkalmazás futtatása közben használjuk applicationContext objektum és hívja annak getBeanDefinitionNames () módszer, amely visszaadja az összes babot applicationContext tartály:
@SpringBootApplication public class Application {private static ApplicationContext applicationContext; public static void main (String [] args) {applicationContext = SpringApplication.run (Application.class, args); displayAllBeans (); } public static void displayAllBeans () {String [] allBeanNames = applicationContext.getBeanDefinitionNames (); mert (String babnév: allBeanNames) {System.out.println (babnév); }}}
Ezzel kinyomtatja az összes babot applicationContext tartály:
fooController fooService // egyéb bab
Vegye figyelembe, hogy az általunk meghatározott babokkal együtt naplózza az összes többi babot is, amely ebben a tartályban van. Az egyértelműség kedvéért itt kihagytuk őket, mert elég sokan vannak.
4. A rugós indítószerkezet használata
A Spring Boot Actuator funkció végpontokat nyújt, amelyek alkalmazásunk statisztikáinak figyelemmel kísérésére szolgálnak.
Számos beépített végpontot tartalmaz, beleértve /bab. Ez megjeleníti az alkalmazásunk összes tavaszi kezelt babjának teljes listáját. A meglévő végpontok teljes listáját megtalálja a hivatalos dokumentumokon.
Most csak elérjük az URL-t //: / bab. Használhatjuk az alapértelmezett kiszolgálói portot, ha nem adtunk meg külön felügyeleti portot. Ez visszaadja a JSON válasz, amely a tavaszi IoC konténer összes babját megjeleníti:
[{"context": "alkalmazás: 8080", "szülő": null, "bab": [{"bab": "fooController", "álnevek": [], "hatókör": "singleton", "típus" : "com.baeldung.displayallbeans.controller.FooController", "erőforrás": "fájl [E: / Munkaterület / oktatóanyagok-master / spring-boot / target /classes/com/baeldung/displayallbeans/controller/FooController.class]" , "függőségek": ["fooService"]}, {"bab": "fooService", "álnevek": [], "hatókör": "singleton", "type": "com.baeldung.displayallbeans.service.FooService "," erőforrás ":" fájl [E: / Munkaterület / oktatóanyagok-master / spring-boot / target / class / com / baeldung / displayallbeans / service / FooService.class] "," függőségek ": []}, // ... más bab]}]
Természetesen ez sok más babból áll, amelyek ugyanabban a tavaszi tartályban találhatók, de az egyértelműség kedvéért itt kihagytuk őket.
Ha többet szeretne megtudni a rugós csomagtartó működtető egységekről, akkor áttérhet a rugós csomagtartó működtető fő útmutatójára.
5. Következtetés
Ebben a cikkben megtudtuk, hogyan lehet az összes babot megjeleníteni a Tavaszi IoC konténer felhasználásával ListableBeanFactory interfész és rugós csomagtartó működtetők.
A teljes végrehajtása az oktatóanyag a Github oldalon található.