Şuayb'in BloguŞuayb'in Blogu
Ana Sayfa
Kategoriler
Oyunlar
MediumHakkındaİletişim
Dil
Tema
    1. Blog
    2. Programlama
    3. Spring Boot Reaktif Programlama

Spring Boot Reaktif Programlama

İlk yayın19 Şubat 2025
Son güncelleme20 Şubat 2025
Okuma süresi3 dk okuma
JavaKotlinSpring BootReaktif ProgramlamaSpring WebFlux
XLinkedInFacebook
Spring Boot Reaktif Programlama

Beğeni yükleniyor...

Spring Boot ile Reaktif Programlama, geliştiricilere bloklamayan, olay güdümlü ve yüksek ölçeklenebilir uygulamalar oluşturma imkanı sunar. Spring WebFlux ve Project Reactor kullanarak eşzamanlı istekleri düşük kaynak kullanımıyla yönetebilir, mikro hizmetler ve gerçek zamanlı uygulamalar geliştirebilirsiniz.


Son güncelleme20 Şubat 2025

Toplam görüntülenmeGörüntülenme yükleniyor...

Önceki makaleSpring Boot ile GraalVM Native UygulamaSonraki makaleSpring Boot Planlanmış Görevler
Şuayb Şimşek

Yazan

Şuayb Şimşek

Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.

Uzmanlık

  • Spring Boot
  • Go
  • Mikroservis
  • Next.js
  • Cloud Native

Bağlantılar

GitHubLinkedInMedium

Benzer yazılar

Spring Boot Configuration Properties
Programlama

Spring Boot Configuration Properties

@ConfigurationProperties ile tip-güvenli yapılandırma tanımlamayı, @Validated ile ayarları doğrulamayı ve profile-specific application-{profile}.yml dosyalarıyla ortama göre değer yönetimini öğrenin.

4 Şubat 20263 dk okuma
JavaKotlinSpring BootYapılandırma
Spring Boot GraphQL JWE Kimlik Doğrulama
Programlama

Spring Boot GraphQL JWE Kimlik Doğrulama

Stateless şifreli JWT’ler (JWE) ile Spring Boot GraphQL API’lerinizi güvenli hale getirmeyi; kullanıcı kimliği ve rolleri JPA ile bir veritabanında saklamayı öğrenin.

17 Mayıs 20256 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEGraphQL
Spring Boot JPA ile JWE Kimlik Doğrulaması
Programlama

Spring Boot JPA ile JWE Kimlik Doğrulaması

Stateless şifreli JWT’ler (JWE) kullanarak Spring Boot API’lerinizi güvenli hale getirirken, kullanıcı kimliklerini ve rolleri JPA destekli bir veritabanında nasıl saklayacağınızı öğrenin.

11 Mayıs 20254 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEJPA

Hakkımda

Spring Boot, mikroservis, güvenlik ve daha fazlası hakkında yazılar.

İletişimYeni başladıysan

Son yazılar

  • Captain Tsubasa 2: World Fighters
  • Captain Tsubasa: Rise of New Champions
  • Spring Boot Configuration Properties
  • Spring Boot GraphQL JWE Kimlik Doğrulama
  • Spring Boot JPA ile JWE Kimlik Doğrulaması

Popüler konular

JavaKotlinSpring BootGüvenlikJWEJWT

Abone ol

Yeni yazılar yayınlandığında pratik backend ve fullstack notlarını al.

Sosyal

© 2024-2026 Şuayb'in Blogu. Tüm hakları saklıdır.

🌟 Neden Reaktif Programlama Kullanmalıyız?

Bu bölümde Neden Reaktif Programlama Kullanmalıyız? konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

  • Eşzamansız & Bloklamayan İşleme: Birden fazla isteği iş parçacıklarını bloklamadan verimli bir şekilde yönetin.
  • Daha İyi Ölçeklenebilirlik: Daha az kaynak kullanarak daha fazla eşzamanlı kullanıcıyı destekleyin.
  • Olay Güdümlü Model: Mikro hizmetler, gerçek zamanlı uygulamalar ve veri akışı işleme için idealdir.
  • Dahili Geri Basınç (Backpressure): Sistemin aşırı yüklenmesini önler.

📋 Gereksinimler

Şunlara sahip olduğunuzdan emin olun:

  • ☕ Java Development Kit (JDK) 17+
  • 📦 Maven veya Gradle kurulu
  • 🔤 Bir Java IDE (IntelliJ IDEA, Eclipse vb.)

🛠️ Adım 1: Bağımlılıkları Ekleyin

Spring WebFlux bağımlılığını pom.xml veya build.gradle dosyanıza ekleyin.

Maven:

XMLpom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

Gradle:

GROOVYbuild.gradle
implementation 'org.springframework.boot:spring-boot-starter-webflux'

🛠️ Adım 2: Reaktif REST Controller Oluşturun

Mono ve Flux kullanarak bloklamayan bir REST endpoint'i tanımlayın.


▶️ Uygulamayı Çalıştırma

Spring Boot uygulamasını çalıştırın:

BASH
./mvnw spring-boot:run

Veya Gradle kullanarak:

BASH
gradle bootRun

🧪 API'yi Test Etme

Bu bölümde API'yi Test Etme konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

Mono Endpoint Testi:

Bu kontrol adımı, endpoint davranışının beklenen çıktı ile uyumunu doğrulamak için kullanılır.

BASH
curl -X GET http://localhost:8080/reaktif/mono

Beklenen çıktı:

PLAINTEXTsnippet.txt
Reaktif Mono'dan Merhaba!

Flux Endpoint Testi:

Bu kontrol adımı, endpoint davranışının beklenen çıktı ile uyumunu doğrulamak için kullanılır.

BASH
curl -X GET http://localhost:8080/reaktif/flux

Beklenen çıktı (her kelime için 1 saniyelik gecikme ile):

PLAINTEXTsnippet.txt
Merhaba
Reaktif
Dünya

🏁 Sonuç

Artık Spring Boot Reaktif Programlama için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.

JAVAReaktifController.java
package com.example.reaktif;

import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.time.Duration;
import java.util.List;

@RestController
@RequestMapping("/reaktif")
public class ReaktifController {

    @GetMapping("/mono")
    public Mono<String> getMono() {
        return Mono.just("Reaktif Mono'dan Merhaba!");
    }

    @GetMapping("/flux")
    public Flux<String> getFlux() {
        return Flux.fromIterable(List.of("Merhaba", "Reaktif", "Dünya"))
                   .delayElements(Duration.ofSeconds(1));
    }
}
KOTLINReaktifController.kt
package com.example.reaktif

import org.springframework.web.bind.annotation.*
import reactor.core.publisher.Flux
import reactor.core.publisher.Mono
import java.time.Duration

@RestController
@RequestMapping("/reaktif")
class ReaktifController {

    @GetMapping("/mono")
    fun getMono(): Mono<String> {
        return Mono.just("Reaktif Mono'dan Merhaba!")
    }

    @GetMapping("/flux")
    fun getFlux(): Flux<String> {
        return Flux.just("Merhaba", "Reaktif", "Dünya")
            .delayElements(Duration.ofSeconds(1))
    }
}