Spring Boot Starter Bağımlılıklar ve Otomatik Konfigürasyon

Spring Boot, modern Java uygulama geliştirme sürecini hızlandırmak için tasarlanmış güçlü bir altyapıdır. Bu makalede Spring Boot’un neden geliştiricilerin hayatını kolaylaştırdığını, starter bağımlılıklarını ve otomatik konfigürasyon mimarisini anlaşılır bir şekilde inceleyeceğiz.

Giriş: Geliştiriciler İçin Otomatik Kapılar

Bir süpermarkete girdiğinde kapıyı elle itmek zorunda kalmadan, otomatik kapıların seni algılayıp açıldığını bilirsin. Modern yazılım dünyasında da benzer bir konfor bekleriz.

Ancak özellikle klasik Spring Framework döneminde işler pek de böyle değildi. Spring ile bir uygulama geliştirirken:

  • Bağımlılıkları tek tek eklemek,
  • XML veya Java konfigürasyonlarını hazırlamak,
  • Sunucu yapılandırmalarını yapmak

tamamen geliştiricinin omuzlarındaydı.

Spring Boot’un amacı tam olarak şudur:

“İş mantığına odaklan, altyapıyı ben hallederim.”

Spring Boot’un Sunduğu İki Büyük Kolaylık

Spring Boot’un başarısının temelinde iki büyük özellik vardır:

1. Starter Bağımlılıklar (Spring Boot Starters)

Spring Boot, bir özelliği kullanmak için gerekli tüm bağımlılıkları tek bir paket altında toplar.

  • spring-boot-starter-web → Spring MVC + Tomcat + JSON desteği
  • spring-boot-starter-data-jpa → Hibernate + JPA altyapısı
  • spring-boot-starter-thymeleaf → Thymeleaf şablon motoru
  • spring-boot-starter-test → JUnit + MockMvc + AssertJ

Uyumluluk, versiyon yönetimi, transitive dependency karmaşası artık tarih oluyor.

2. Otomatik Konfigürasyon (Auto-Configuration)

Spring Boot uygulamayı başlatırken classpath’i analiz eder ve gördüğü teknolojilere göre konfigürasyonları otomatik oluşturur.

Örnek:

  • H2 classpath’te → otomatik H2 veritabanı ve DataSource oluşturulur.
  • Thymeleaf yüklü → view resolver otomatik yapılandırılır.
  • Spring MVC var → DispatcherServlet otomatik aktif olur.
  • Tomcat bağımlılığı var → gömülü Tomcat ayağa kalkar.

Hiçbir manuel ayara gerek yoktur.

Örnek Uygulama: Reading List (Okuma Listesi)

Spring Boot’u anlamanın en iyi yolu basit bir örnektir. Bu örnekte kullanıcıların kitap ekleyebildiği ve listeleyebildiği küçük bir okuma listesi uygulaması geliştireceğiz.

Kullanılan Teknolojiler

  • Spring MVC
  • Thymeleaf
  • Spring Data JPA
  • H2 Database
  • Gradle
  • Java

Spring Initializr ile Proje Yapılandırma

Aşağıdaki bağımlılıkları seçiyoruz:

  • Web
  • Thymeleaf
  • JPA
  • H2

Spring Boot otomatik olarak:

  • standart klasör yapısı,
  • build dosyaları (pom.xml veya build.gradle),
  • ana uygulama sınıfı (@SpringBootApplication)

oluşturur.

Domain Katmanı: Book Sınıfı

Uygulamanın ana domain'i Book'tur:

id
reader
isbn
title
author
description
  

JPA ile entity tanımlamak için:

  • @Entity
  • @Id
  • @GeneratedValue

kullanmamız yeterlidir.

Repository Katmanı: Spring Data JPA

Spring Data JPA sayesinde repository implementasyonu yazmadan CRUD yapabiliriz:

public interface ReadingListRepository 
       extends JpaRepository<Book, Long> {
   List<Book> findByReader(String reader);
}
  

Spring Boot bu arayüzü otomatik olarak implemente eder.

Web Katmanı: Controller + Thymeleaf

Controller Ne Yapıyor?

GET /{reader}:

  • Repository’den kitapları getirir.
  • Modele ekler.
  • readingList.html view’ine gönderir.

POST /{reader}:

  • Formdan gelen kitabı kaydeder.
  • Kullanıcıyı kendi sayfasına yönlendirir.

Thymeleaf Şablonu

readingList.html içinde:

  • Kitap listesi görüntülenir.
  • Boşsa “Listede kitap yok” mesajı çıkar.
  • Yeni kitap eklemek için form vardır.

Spring Boot otomatik olarak /templates altındaki dosyaları çözümleyip view olarak kullanır.

Static İçerikler: Ek Konfigürasyon Gerekmez

src/main/resources/static altındaki tüm dosyalar otomatik olarak servis edilir:

  • style.css
  • script.js
  • görseller

Ek bir ayar gerekmez.

Uygulamayı Çalıştırmak

1. Gradle ile

gradle bootRun

2. JAR olarak

gradle build
java -jar build/libs/readinglist-0.0.1-SNAPSHOT.jar
  

Çalıştırıldığında otomatik olarak:

  • Tomcat başlar
  • Spring MVC aktif olur
  • JPA + H2 yapılandırılır
  • Thymeleaf view resolver devreye girer

Arkada Neler Oluyor? (Spring Boot Magic)

Spring Boot uygulama açılırken şu soruları sorar:

  • H2 var mı? → DataSource oluştur
  • Hibernate var mı? → JPA kur
  • Thymeleaf var mı? → View resolver ekle
  • Tomcat var mı? → Embedded server başlat

Tüm bu kararları @Conditional anotasyonları ile hesaplar.

Sonuç: Spring Boot ile Kazandıklarımız

  • Zaman tasarrufu
  • Daha az konfigürasyon
  • Daha az hata
  • Daha temiz bir proje yapısı
  • Doğrudan iş mantığına odaklanma

Ve en önemlisi:

“Kapıyı elle itmek yerine otomatik kapıyı tercih ediyorsun.”

Beğendiysen bir çay ısmarlayabilirsin ☕

Bana çay ısmarla

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *