Ποια είναι η διαφορά μεταξύ Filters, Interceptors και Listeners στο Spring;
sobes.tech AI
Απάντηση από AI
-
Φίλτρα (Spring Web): Παρεμβαίνουν στα αιτήματα και τις απαντήσεις σε επίπεδο servlet. Χρησιμοποιούνται για τροποποίηση του αιτήματος/απάντησης, αυθεντικοποίηση, εξουσιοδότηση, καταγραφή πριν το αίτημα φτάσει στον ελεγκτή. Εφαρμόζονται σε μοτίβα URL.
-
Interceptors (Spring MVC): Παρεμβαίνουν στα αιτήματα σε επίπεδο Spring MVC. Λειτουργούν μετά τα φίλτρα, αλλά πριν επεξεργαστεί το αίτημα ο ελεγκτής. Επιτρέπουν ενέργειες πριν (
preHandle), μετά (postHandle) και μετά την ολοκλήρωση της επεξεργασίας (afterCompletion). Χρησιμοποιούνται για χειρισμό του μοντέλου, έλεγχο δικαιωμάτων σε επίπεδο ελεγκτή. Εφαρμόζονται σε μεθόδους ελεγκτή. -
Listeners (Spring Context): Ανταποκρίνονται σε γεγονότα στο πλαίσιο του Spring. Επιτρέπουν ενέργειες κατά την εκκίνηση ή τερματισμό του πλαισίου, κατά τη λήψη συγκεκριμένου τύπου γεγονότος. Μπορούν να χρησιμοποιηθούν για αρχικοποίηση πόρων, καθαρισμό δεδομένων ή εκτέλεση εργασιών κατά την αλλαγή κατάστασης της εφαρμογής. Λειτουργούν ανεξάρτητα από τα web αιτήματα. Υλοποιούν το interface
ApplicationListener.
Ακολουθεί συγκριτικός πίνακας:
| Χαρακτηριστικό | Φίλτρα | Interceptors | Listeners |
|---|---|---|---|
| Επίπεδο | Servlet | Spring MVC | Spring Context |
| Πότε λειτουργούν | Πριν και μετά το servlet | Πριν, μετά και κατά την ολοκλήρωση | Κατά την εμφάνιση γεγονότος |
| Εφαρμόζεται | σε μοτίβα URL | σε μεθόδους ελεγκτή | σε τύπους γεγονότων |
| Σκοπός | Τροποποίηση αιτημάτων/απαντήσεων, αυθεντικοποίηση | Χειρισμός μοντέλου, εξουσιοδότηση σε επίπεδο ελεγκτή | Ανταπόκριση σε γεγονότα πλαισίου |
| Διεπαφή | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |