Spring PostConstruct og PreDestroy Annotations

1. Introduktion

Foråret giver os mulighed for at knytte brugerdefinerede handlinger til oprettelse og ødelæggelse af bønner. Vi kan for eksempel gøre det ved at implementere InitialisererBønne og Engangsbønne grænseflader.

I denne korte vejledning ser vi på en anden mulighed: @PostConstruct og @PreDestroy kommentarer.

2. @PostConstruct

Forårsopkaldsmetoder kommenteret med @PostConstruct kun en gang, lige efter initialiseringen af ​​bønneegenskaber. Husk, at disse metoder kører, selvom der ikke er noget at initialisere.

Metoden kommenteret med @PostConstruct kan have ethvert adgangsniveau, men det kan ikke være statisk.

Et eksempel på brug af @PostConstruct udfylder en database. Under udviklingen vil vi f.eks. Gerne oprette nogle standardbrugere:

@Komponent offentlig klasse DbInit {@Autowired privat UserRepository userRepository; @PostConstruct privat ugyldigt postConstruct () {User admin = new User ("admin", "admin password"); Bruger normalUser = ny bruger ("bruger", "brugeradgangskode"); userRepository.save (admin, normalUser); }}

Ovenstående eksempel initialiseres først UserRepository og løb derefter @PostConstruct metode.

3. @PreDestroy

En metode, der er kommenteret med @PreDestroy kører kun en gang, lige før Spring fjerner vores bønne fra applikationskonteksten.

Samme som med @PostConstruct, de metoder, der er kommenteret med @PreDestroy kan have ethvert adgangsniveau, men kan ikke være statisk.

@Komponent offentlig klasse UserRepository {privat DbConnection dbConnection; @PreDestroy offentlig ugyldighed preDestroy () {dbConnection.close (); }}

Formålet med denne metode skal være at frigive ressourcer eller udføre andre oprydningsopgaver, før bønnen ødelægges, for eksempel at lukke en databaseforbindelse.

4. Java 9+

Bemærk, at begge dele @PostConstruct og @PreDestroy annoteringer er en del af Java EE. Og da Java EE er udfaset i Java 9 og fjernet i Java 11, er vi nødt til at tilføje en ekstra afhængighed for at bruge disse kommentarer:

 javax.annotation javax.annotation-api 1.3.2 

5. Konklusion

I denne korte vejledning har vi lært, hvordan man bruger @PostConstruct og @PreDestroy kommentarer.

Som altid er al kildekode tilgængelig på GitHub.