Spring'de Filtreler, Interceptorler ve Dinleyiciler arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
-
Filtreler (Spring Web): Servlet seviyesinde istekleri ve yanıtları yakalarlar. İstek/yanıtı değiştirme, kimlik doğrulama, yetkilendirme, günlük kaydı gibi işlemler için kullanılırlar ve isteğin kontrolöre ulaşmadan önce uygulanır. URL şablonlarına uygulanır.
-
Interceptors (Spring MVC): Spring MVC seviyesinde istekleri yakalarlar. Filtrelerden sonra, ancak isteğin kontrolör tarafından işlenmesinden önce çalışırlar. (
preHandle), (postHandle) ve (afterCompletion) ile istek işleme tamamlandıktan sonra işlemler yapmaya olanak tanır. Model üzerinde manipülasyon, kontrolör seviyesinde erişim izinleri kontrolü için kullanılırlar. Kontrolör metodlarına uygulanır. -
Listeners (Spring Context): Spring bağlamındaki olaylara tepki verirler. Bağlamın başlatılması veya durdurulması sırasında, belirli bir olay türü alındığında işlemler yaparlar. Kaynakların başlatılması, verilerin temizlenmesi veya uygulama durumundaki değişikliklere göre görevlerin yerine getirilmesi gibi işlemler için kullanılabilirler. Web isteklerinden bağımsız çalışırlar.
ApplicationListenerarayüzünü uygularlar.
İşte tablo halinde karşılaştırma:
| Özellik | Filtreler | Interceptors | Listeners |
|---|---|---|---|
| Seviye | Servlet | Spring MVC | Spring Context |
| Ne zaman çalışır | Servlet öncesi ve sonrası | Kontrolör öncesi, sonrası ve tamamlandıktan sonra | Olay gerçekleştiğinde |
| Uygulama alanı | URL şablonları | Kontrolör metodları | Olay türleri |
| Amaç | İstek/yanıt modifikasyonu, kimlik doğrulama | Model manipülasyonu, kontrolör seviyesinde yetkilendirme | Bağlam olaylarına tepki verme |
| Arayüz | javax.servlet.Filter |
org.springframework.web.servlet.HandlerInterceptor |
org.springframework.context.ApplicationListener |