Hvordan få alle vårstyrte bønner?

1. Oversikt

I denne artikkelen vil vi utforske forskjellige teknikker for å vise alle vårstyrte bønner med beholderen.

2. IoC-beholderen

En bønne er grunnlaget for en våradministrert applikasjon; alle bønner ligger i IOC-beholderen, som er ansvarlig for å håndtere livssyklusen deres.

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

  1. Bruker en ListableBeanFactory grensesnitt
  2. Bruke en fjærstartsaktuator

3. Bruke ListableBeanFactory Grensesnitt

De ListableBeanFactory grensesnitt gir getBeanDefinitionNames () metode som returnerer navnene på alle bønnene som er definert i denne fabrikken. Dette grensesnittet er implementert av alle bønnefabrikkene som forhåndslaster bønnedefinisjonene sine for å telle opp alle bønneforekomster.

Du finner listen over alle kjente undergrensesnitt og dens implementeringsklasser i den offisielle dokumentasjonen.

For dette eksemplet bruker vi en Spring Boot-applikasjon.

Først lager vi noen vårbønner. La oss lage en enkel vårkontroller FooController:

@Controller offentlig klasse FooController {@Autowired privat FooService fooService; @RequestMapping (value = "/ displayallbeans") offentlig streng getHeaderAndBody (kartmodell) {model.put ("header", fooService.getHeader ()); model.put ("melding", fooService.getBody ()); returner "displayallbeans"; }}

Denne kontrolleren er avhengig av en annen vårbønne FooService:

@Service offentlig klasse FooService {public String getHeader () {return "Vis alle bønner"; } public String getBody () {return "Dette er et eksempelprogram som viser alle bønner" + "i Spring IoC-container ved hjelp av ListableBeanFactory-grensesnittet" + "og Spring Boot Actuators."; }}

Merk at vi har laget to forskjellige bønner her:

  1. fooController
  2. fooService

Når vi kjører dette programmet, bruker vi applicationContext innvende og kalle sin getBeanDefinitionNames () metoden, som vil returnere alle bønnene i vår applicationContext container:

@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 skrive ut alle bønnene fra applicationContext container:

fooController fooService // andre bønner

Merk at sammen med bønner som er definert av oss, den logger også alle andre bønner som er i denne beholderen. For klarhets skyld har vi utelatt dem her fordi det er ganske mange av dem.

4. Bruke fjærstartsaktuator

Spring Boot Actuator-funksjonaliteten gir sluttpunkter som brukes til å overvåke applikasjonens statistikk.

Den inkluderer mange innebygde endepunkter, inkludert /bønner. Dette viser en komplett liste over alle vårstyrte bønner i applikasjonen vår. Du finner den fullstendige listen over eksisterende endepunkter på de offisielle dokumentene.

Nå skal vi bare trykke på nettadressen //: / bønner. Vi kan bruke standard serverporten vår hvis vi ikke har spesifisert noen egen administrasjonsport. Dette vil returnere a JSON svar som viser alle bønnene i Spring IoC Container:

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

Selvfølgelig består dette også av mange andre bønner som ligger i samme vårbeholder, men for klarhets skyld har vi utelatt dem her.

Hvis du vil utforske mer om Spring Boot Actuators, kan du gå videre til den viktigste Spring Boot Actuator-guiden.

5. Konklusjon

I denne artikkelen lærte vi hvordan du viser alle bønner i en Spring IoC Container ved hjelp av ListableBeanFactory grensesnitt og fjærstartaktuatorer.

De full gjennomføring av denne veiledningen finner du på Github.