Hvordan får man alle forårshåndterede bønner?

1. Oversigt

I denne artikel udforsker vi forskellige teknikker til at vise alle forårshåndterede bønner med beholderen.

2. IoC-beholderen

En bønne er grundlaget for en Spring-administreret applikation; alle bønner befinder sig i IOC-beholderen, som er ansvarlig for styring af deres livscyklus.

Vi kan få en liste over alle bønner i denne container på to måder:

  1. Brug af en ListableBeanFactory interface
  2. Brug af en fjederstartsaktuator

3. Brug ListableBeanFactory Interface

Det ListableBeanFactory interface giver getBeanDefinitionNames () metode som returnerer navnene på alle bønner, der er defineret på denne fabrik. Denne grænseflade er implementeret af alle bønnefabrikker, der forudindlæser deres bønnedefinitioner for at tælle alle deres bønneinstanser.

Du kan finde listen over alle kendte undergrænseflader og dens implementeringsklasser i den officielle dokumentation.

I dette eksempel bruger vi en Spring Boot-applikation.

Først opretter vi nogle springbønner. Lad os oprette en simpel Spring Controller FooController:

@Controller offentlig klasse FooController {@Autowired privat FooService fooService; @RequestMapping (værdi = "/ displayallbeans") offentlig streng getHeaderAndBody (kortmodel) {model.put ("header", fooService.getHeader ()); model.put ("besked", fooService.getBody ()); returner "displayallbeans"; }}

Denne controller er afhængig af en anden Spring Bean FooService:

@Service offentlig klasse FooService {public String getHeader () {return "Vis alle bønner"; } public String getBody () {return "Dette er en prøveapplikation, der viser alle bønner" + "i Spring IoC-container ved hjælp af ListableBeanFactory-grænsefladen" + "og Spring Boot Actuators."; }}

Bemærk, at vi har oprettet to forskellige bønner her:

  1. fooController
  2. fooService

Mens vi udfører denne applikation, bruger vi applicationContext indvende og kalde dens getBeanDefinitionNames () metode, som returnerer alle bønner i vores applicationContext beholder:

@SpringBootApplication public class Application {privat statisk ApplicationContext applicationContext; public static void main (String [] args) {applicationContext = SpringApplication.run (Application.class, args); displayAllBeans (); } offentlig statisk ugyldig displayAllBeans () {String [] allBeanNames = applicationContext.getBeanDefinitionNames (); for (String beanName: allBeanNames) {System.out.println (beanName); }}}

Dette vil udskrive alle bønner fra applicationContext beholder:

fooController fooService // andre bønner

Bemærk, at sammen med bønner defineret af os, det logger også alle andre bønner, der er i denne beholder. Af hensyn til klarheden har vi udeladt dem her, fordi der er ret mange af dem.

4. Brug af fjederstartsaktuator

Spring Boot Actuator-funktionaliteten giver slutpunkter, der bruges til at overvåge vores applikations statistikker.

Det inkluderer mange indbyggede slutpunkter, inklusive /bønner. Dette viser en komplet liste over alle de forårshåndterede bønner i vores ansøgning. Du kan finde den fulde liste over eksisterende slutpunkter på de officielle dokumenter.

Nu rammer vi bare URL'en //: / bønner. Vi kan bruge vores standardserverport, hvis vi ikke har angivet nogen separat styringsport. Dette returnerer en JSON svar, der viser alle bønner i Spring IoC Container:

[{"context": "application: 8080", "parent": null, "beans": [{"bean": "fooController", "aliases": [], "scope": "singleton", "type" : "com.baeldung.displayallbeans.controller.FooController", "resource": "fil [E: / Workspace / tutorials-master / spring-boot / target /classes/com/baeldung/displayallbeans/controller/FooController.class]" , "afhængigheder": ["fooService"]}, {"bean": "fooService", "aliases": [], "scope": "singleton", "type": "com.baeldung.displayallbeans.service.FooService "," resource ":" fil [E: / Workspace / tutorials-master / spring-boot / target / classes / com / baeldung / displayallbeans / service / FooService.class] "," afhængigheder ": []}, // ... andre bønner]}]

Selvfølgelig består dette også af mange andre bønner, der ligger i den samme fjederbeholder, men af ​​hensyn til klarheden har vi udeladt dem her.

Hvis du vil udforske mere om Spring Boot Actuators, kan du gå videre til den vigtigste Spring Boot Actuator guide.

5. Konklusion

I denne artikel lærte vi om, hvordan man viser alle bønner i en Spring IoC Container ved brug af ListableBeanFactory interface og Spring Boot Actuators.

Det fuld implementering af denne vejledning kan findes over på Github.


$config[zx-auto] not found$config[zx-overlay] not found