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:
- Bruker en ListableBeanFactory grensesnitt
- 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:
- fooController
- 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.