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

Spring Boot ile Dependency Injection

İlk yayın18 Aralık 2024
Son güncelleme19 Aralık 2024
Okuma süresi3 dk okuma
JavaKotlinSpring BootBağımlılık Enjeksiyonu
XLinkedInFacebook
Spring Boot ile Dependency Injection

Beğeni yükleniyor...

Bağımlılık Enjeksiyonu (Dependency Injection - DI), Spring Boot'un temel konseptlerinden biridir ve daha gevşek bağlılık ve artan test edilebilirlik sağlar. Bu kılavuz, Java ve Kotlin ile Spring Boot'ta DI kullanımını pratik örneklerle açıklar.


Son güncelleme19 Aralık 2024

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

Önceki makaleObject-Relational MappingSonraki makaleSpring Boot ile Aspect-Oriented Programming
Ş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 Bağımlılık Enjeksiyonu Kullanmalıyız?

Bağımlılık Enjeksiyonu, sınıflara bağımlılıkları manuel olarak oluşturmadan enjekte etmeyi sağlar. Bu, şu avantajları sunar:

  • Daha modüler kod
  • Testlerin kolaylaştırılması
  • Daha kolay bakım

📋 Gereksinimler

📋 Aşağıdakilere sahip olduğunuzdan emin olun:

  • ☕ Java Development Kit (JDK) 17+
  • 📦 Maven veya Gradle yüklü
  • 🔤 Bir Java IDE (örneğin, IntelliJ IDEA, Eclipse)

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

Gerekli Spring Boot bağımlılıklarını ekleyin:

Maven:

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

Gradle:

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

🛠️ Adım 2: Bir Servis Oluşturun

Bağımlılık Enjeksiyonu'nu göstermek için basit bir servis tanımlayın.


🛠️ Adım 3: Bağımlılıkları Enjekte Edin

Servisi diğer bileşenlere enjekte etmek için anotasyonları kullanın.


▶️ Uygulamayı Çalıştırın

Uygulamayı aşağıdaki komutlarla çalıştırın:

Spring Boot (Java/Kotlin): Kurulumun doğru çalıştığını doğrulamak için uygulamayı tercih ettiğiniz dil yığınıyla başlatın.

BASH
./mvnw spring-boot:run

API'ye şu adresten erişin: http://localhost:8080/api/users.


🧪 API'yi Test Edin

API'yi aşağıdaki cURL komutlarıyla test edebilirsiniz:

Tüm kullanıcıları alın

Bu istekle liste endpoint’inin döndürdüğü temel veri yapısını hızlıca doğrulayabilirsiniz.

BASH
curl -X GET http://localhost:8080/api/users

Belirli bir kullanıcıyı alın

Bu istek, path parametresi ile tekil kaynak erişiminin doğru çalıştığını doğrulamak için kullanılır.

BASH
curl -X GET http://localhost:8080/api/users/1

🏁 Sonuç

Artık Dependency Injection 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.

Servis

JAVAUserService.java
package com.example.demo.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {

    public String getUserById(String id) {
        return "ID ile kullanıcı: " + id;
    }

    public String getAllUsers() {
        return "Tüm kullanıcılar alınıyor.";
    }
}

Servis

KOTLINUserService.kt
package com.example.demo.service

import org.springframework.stereotype.Service

@Service
class UserService {

    fun getUserById(id: String): String {
        return "ID ile kullanıcı: $id"
    }

    fun getAllUsers(): String {
        return "Tüm kullanıcılar alınıyor."
    }
}

Controller

JAVAUserController.java
package com.example.demo.controller;

import com.example.demo.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping("/{id}")
    public String getUserById(@PathVariable String id) {
        return userService.getUserById(id);
    }

    @GetMapping
    public String getAllUsers() {
        return userService.getAllUsers();
    }
}

Controller

KOTLINUserController.kt
package com.example.demo.controller

import com.example.demo.service.UserService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping("/api/users")
class UserController(
    private val userService: UserService
) {

    @GetMapping("/{id}")
    fun getUserById(@PathVariable id: String): String = userService.getUserById(id)

    @GetMapping
    fun getAllUsers(): String = userService.getAllUsers()
}