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:

  1. Használva ListableBeanFactory felület
  2. 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:

  1. fooController
  2. 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ó.