Spring PostConstruct en PreDestroy-annotaties

1. Inleiding

Met de lente kunnen we aangepaste acties koppelen aan het maken en vernietigen van bonen. We kunnen dit bijvoorbeeld doen door het implementeren van de Initialiseren Bean en Wegwerpboon interfaces.

In deze korte tutorial kijken we naar een tweede mogelijkheid: de @PostConstruct en @PreDestroy annotaties.

2. @PostConstruct

Spring roept methoden aan die zijn geannoteerd met @PostConstruct slechts één keer, net na de initialisatie van de booneigenschappen. Houd er rekening mee dat deze methoden ook worden uitgevoerd als er niets te initialiseren is.

De methode geannoteerd met @PostConstruct kan elk toegangsniveau hebben, maar het kan niet statisch zijn.

Een voorbeeld van het gebruik van @PostConstruct is een database aan het vullen. Tijdens de ontwikkeling willen we bijvoorbeeld enkele standaardgebruikers maken:

@Component openbare klasse DbInit {@Autowired privé UserRepository userRepository; @PostConstruct private void postConstruct () {Gebruiker admin = nieuwe gebruiker ("admin", "admin wachtwoord"); Gebruiker normalUser = nieuwe gebruiker ("gebruiker", "gebruikerswachtwoord"); userRepository.save (admin, normalUser); }}

Het bovenstaande voorbeeld wordt eerst geïnitialiseerd UserRepository en ren dan @PostConstruct methode.

3. @PreDestroy

Een methode geannoteerd met @PreDestroy wordt slechts één keer uitgevoerd, net voordat Spring onze boon uit de toepassingscontext verwijdert.

Hetzelfde als bij @PostConstruct, de methoden die zijn geannoteerd met @PreDestroy kan elk toegangsniveau hebben, maar kan niet statisch zijn.

@Component openbare klasse UserRepository {privé DbConnection dbConnection; @PreDestroy openbare leegte preDestroy () {dbConnection.close (); }}

Het doel van deze methode moet zijn om bronnen vrij te maken of andere opruimtaken uit te voeren voordat de bean wordt vernietigd, bijvoorbeeld het sluiten van een databaseverbinding.

4. Java 9+

Merk op dat beide @PostConstruct en @PreDestroy annotaties maken deel uit van Java EE. En aangezien Java EE is verouderd in Java 9 en verwijderd in Java 11, moeten we een extra afhankelijkheid toevoegen om deze annotaties te gebruiken:

 javax.annotation javax.annotation-api 1.3.2 

5. Conclusie

In deze korte tutorial hebben we geleerd hoe we @PostConstruct en @PreDestroy annotaties.

Zoals altijd is alle broncode beschikbaar op GitHub.