Πρόσφατα, συνάντησα αυτόν τον σχολιασμό σε ένα έργο της εταιρείας @PostConstruct και μπερδεύτηκα.
Αναθεώρηση:
Μετά από διαβούλευση, η περίληψη έχει ως εξής:
1. Ξεκινώντας από την προδιαγραφή Java EE5, δύο σχολιασμοί που επηρεάζουν τον κύκλο ζωής του servlet, το @PostConstruct και το @PreDestroy, χρησιμοποιούνται για την τροποποίηση μιας μη στατικής μεθόδου void(). Υπάρχουν δύο τρόποι για να το γράψετε:
@PostConstruct
δημόσιο κενό someMethod(){}
ή
δημόσια @PostConstruct ακυρώσει someMethod(){}
Η @PostConstruct τροποποιημένη μέθοδος εκτελείται όταν ο εξυπηρετητής φορτώνει τη μικροεφαρμογή εξυπηρετητή καιΘα εκτελεστεί μόνο μία φορά από τον διακομιστή。 Το PostConstruct εκτελείται μετά τον κατασκευαστή και πριν από τη μέθοδο init(). Η μέθοδος PreDestroy() εκτελείται αφού η μέθοδος destroy() είναι διανοητική
Επιπλέον, η σειρά των Κατασκευαστών, @Autowired και @PostConstruct την άνοιξη
Στην πραγματικότητα, από την κυριολεκτική έννοια της έγχυσης εξάρτησης, μπορούμε να γνωρίζουμε ότι για να εγχυθεί το αντικείμενο p στο αντικείμενο Α, τότε το αντικείμενο Α και το αντικείμενο p πρέπει πρώτα να δημιουργηθούν πριν πραγματοποιηθεί η ένεση. Έτσι, εάν μια μεταβλητή μέλους p είναι σχολιασμένη @Autowried στην κατηγορία Α, τότε @Autowired έγχυση πραγματοποιείται μετά την εκτέλεση της μεθόδου κατασκευής του Α.
Εάν θέλετε να ολοκληρώσετε ορισμένες λειτουργίες αρχικοποίησης κατά τη δημιουργία ενός αντικειμένου και αυτές οι λειτουργίες προετοιμασίας εξαρτώνται από την έγχυση εξάρτησης, τότε δεν μπορείτε να το κάνετε στον κατασκευαστή. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε μια μέθοδο @PostConstruct σχολιασμούς για να ολοκληρώσετε την προετοιμασία @PostConstruct οι σχολιασμένες μέθοδοι θα κληθούν αυτόματα μετά την ολοκλήρωση της έγχυσης εξάρτησης.
Κατασκευαστής >> @Autowired >> @PostConstruct
Παράδειγμα:
|