Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring BootSpring MVC

Spring Boot Interceptor Nedir? Uygulama Örneği

Paylaş

Spring Boot Dersleri‘ne devam ediyorum.

İçindekiler

  • Interceptor Nedir?
    • Interceptor Nasıl Çalışır
    • Interceptor Kullanım Amacı
    • Interceptor Kullanım Yöntemleri
  • HandlerInterceptor
    • preHandle()
    • postHandle()
    • afterCompletion()
  • Spring Boot Interceptor Uygulama Örneği
  • Uygulama Örneğini İndir

Bu yazıda Spring Boot projelerinde Interceptor kullanımından bahsedeceğim. Ama öncesinde Interceptor nedir buna bakalım. Sonrasında ise bir uygInnedir ve nasıl kullanıldığına bakacağız. Sonrasında ise bir uygulama örneği yapacağım.

Interceptor Nedir?

Interceptor, Spring MVC paketinde bulunan bir sınıftır. HTTP isteklerinin öncesi, sonrası ve tamamlandıktan sonra yapılması gereken işlemleri bu sınıf aracılığı ile handle edebilmekteyiz.

Interceptor Nasıl Çalışır

Spring Boot Interceptor Nedir

Gelen isteklerin endpointe ulaşmadan önce işlenmesini sağlamamıza yarayan bir sınıftır. Bir servlete benzer ve DispatcherServlet ten sonra bulunmaktadır. HTTP isteklerini kontrol etmek için kullanılır. İstek başlamadan önce çağrılır ve HTTP isteği ile ilgili bilgileri içeren HttpServletRequest nesnesini ve HTTP isteği ile ilgili yanıtı döndürecek HttpServletResponse nesnesini alır.

Interceptor Kullanım Amacı

Genellikle kimlik doğrulama, validasyon ve loglama işlemlerinde bu yöntemi kullanmaktayız.

Interceptor Kullanım Yöntemleri

Uygulamamızda Interceptor’u kullanabilmemiz için iki yöntem bulunmaktadır.

  1. HandleInterceptor arayüzünü implement etmek.
  2. HandleInterceptorAdapter sınıfını extends ederek kullanmak.

HandlerInterceptor

Uygulamamızda HandlerInterceptor interface’sini implement ederek kullanabiliriz. Bu sınıf org.springframework.web.servlet paketinin altında bulunmaktadır. Override ederek kullanabileceğimiz metodlar nelerdir bunlara bakalım.

preHandle()

Bu method, kullanıcıdan gelen istek endpointe gönderilmeden önce çalışır. Method boolean değer döndürür. true değeri isteğin devam etmesini sağlar. false değeri ise isteği keser ve işlem devam etmez.

postHandle()

Bu method, client’e yanıt gönderilmeden önce işlemleri gerçekleştirmek için kullanılır ve sonrasında istemciye yanıt gönderilir.

afterCompletion()

Bu method, tüm request ve respond işlemleri tamamlandıktan sonraki işlemler için kullanılır.

Spring Boot Interceptor Uygulama Örneği

Spring Boot Interceptor uygulamasında bir loglama işlemi gerçekleştireceğiz. Bu loglama aşamaları bizim oluşturacağımız rest api’ya gelmeden, geldikten sonra ve işlem tamamlandıktan sonra loglama işlemini gerçekleştireceğiz. Yukarıda açıkladığım Interceptor arayüzünü kendi sınfımıza implement edeceğiz.

Maven bağımlılığımız aşağıdaki gibi olacaktır.

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>Code language: HTML, XML (xml)

LoggingInterceptor sınıfımızı oluşturalım.

@Component
public class LoggingInterceptor implements HandlerInterceptor {
    private static final Logger LOG = LoggerFactory.getLogger(LoggingInterceptor.class);
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object)  {
        LOG.info("Before Handler execution");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView model){
        LOG.info("Handler execution is complete");
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception){
        LOG.info("Request is complete");
    }
}
Code language: Java (java)

HandlerInterceptor interface’sini implement ederek preHandle, postHandle ve afterCompletion methodlarını Override ederek içerisine loglarımızı girdik. Rest api’mizde bu döngülerin öncesi, sonrası ve tamamlandıktan sonra çalışacak loglarımızı yazdık. Bu methodlara gelen HttpServletRequest ve HttpServletResponse değerlerini alarak da özelleştirebiliyoruz.

WebConfig sınıfımızı oluşturalım ve bu sınıf WebMvcConfigurer sınıfını implement ederek yazdığımız LoggingInterceptor sınıfını InterceptorRegistry kaydederek IOC yaparak çalışmasını sağlamış olacağız.

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggingInterceptor());
    }
}
Code language: Java (java)

Şimdi bir Controller sınıfı oluşturalım ve bu bir RestController olacak ve cevap olarak sadece “Hello World” yazacağız.

@RestController
public class HelloWorldController {
    Logger LOG = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("/")
    public String executeLogger() {
        LOG.info("Inside Controller");
        return "Hello World";
    }
}
Code language: Java (java)

Şimdi projemizi çalıştıralım ve sonuca bakalım.

Hello World

Cevap olarak gördük ve şimdi uygulamamızın loglarına bakalım.

INFO -interceptor.LoggingInterceptor  : Before Handler execution
INFO -controller.HelloWorldController : Inside Controller
INFO -interceptor.LoggingInterceptor  : Handler execution is complete
INFO -interceptor.LoggingInterceptor  : Request is completeCode language: CSS (css)

Uygulama Örneğini İndir

Projenin Kaynak Kodlarına Ulaş


Önceki Ders: Spring Boot Redis Cache Kullanımı
Spring Boot Dersleri
Sonraki Ders: Spring Boot Content Negotiation XML – JSON

Tags:

spring boot derslerispring boot interceptor

Paylaş

Diğer Yazılar

Spring Data MongoDB Dersleri Uygulama Örnekleri
Previous

Spring Data MongoDB Dersleri

Spring Boot Dersleri Content Negotiation Uygulama Örneği
Next

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

Next
Spring Boot Dersleri Content Negotiation Uygulama Örneği
29 Nisan 2023

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

Previews
10 Nisan 2023

Spring Data MongoDB Dersleri

Spring Data MongoDB Dersleri Uygulama Örnekleri

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Boot Dersleri Content Negotiation Uygulama Örneği

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

Spring Data Redis Cache Kullanım Örneği

Spring Boot Data Redis Nedir? Distributed Cache Kullanımı

Spring Boot Dersleri

Spring Boot Projelerinde Tomcat Yerine Jetty Kullanmak

Spring Boot Dersleri Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Röportaj
Spring Cloud Stream
Redis
Debezium
XCode
Video
Spring Native
Mikroservis Mimarisi
iPhone Uygulama Geliştirme
MongoDB
PostgreSQL
Spring Security
JPA
Objective C
Spring Data
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
JDBC
RabbitMQ
PrimeFaces
Spring Jdbc Template
Spring
Google
Manset
Spring MVC
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Java SE
Tanıyalım
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale