← Kursa Dön
📄 Text · 12 min

Spring Boot Neden Var?

Giriş

Spring Framework güçlü bir çatı olmasına rağmen, bir projeyi sıfırdan kurmak hâlâ zahmetliydi. XML konfigürasyonları, dependency yönetimi, uygulama sunucusu ayarları… Spring Boot, 2014 yılında tüm bu zorlukları ortadan kaldırmak için doğdu. Bu derste Spring Boot'un felsefesini, sağladığı kolaylıkları ve tarihsel gelişimini inceleyeceğiz.

Convention over Configuration

Spring Boot'un temel felsefesi "Convention over Configuration" (Konfigürasyon yerine Konvansiyon) ilkesidir. Yani framework, en yaygın kullanım senaryoları için mantıklı varsayılan ayarlar (opinionated defaults) sunar. Siz sadece varsayılandan farklı olan kısımları belirtirsiniz.

# Spring Boot İLE: Sadece varsayılandan farklı olanı yaz
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb

# Spring Boot OLMADAN: Her şeyi tek tek konfigüre et
# - DataSource bean tanımı
# - TransactionManager bean tanımı
# - EntityManagerFactory bean tanımı
# - ViewResolver bean tanımı
# - DispatcherServlet mapping
# ... ve daha onlarcası

Starter Dependencies

Spring Boot starter bağımlılıkları ile ilgili tüm kütüphaneleri tek bir dependency altında toplar. Versiyon uyumsuzluğu derdi ortadan kalkar:

<!-- Bir web uygulaması için TEK starter yeterli -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- Versiyon belirtmeye gerek yok, parent'tan gelir -->
</dependency>

<!-- Bu starter şunları otomatik getirir:
     - spring-web, spring-webmvc
     - jackson-databind (JSON)
     - Embedded Tomcat
     - spring-boot-starter-logging (Logback)
     - hibernate-validator
-->

Yaygın kullanılan starterlar:

  • spring-boot-starter-web — Web uygulamaları

  • spring-boot-starter-data-jpa — JPA/Hibernate ile veritabanı

  • spring-boot-starter-security — Güvenlik

  • spring-boot-starter-test — Test araçları

  • spring-boot-starter-actuator — Monitoring/Health

Embedded Server (Gömülü Sunucu)

Geleneksel Java web uygulamalarında WAR dosyası oluşturup Tomcat/JBoss'a deploy edersiniz. Spring Boot ise sunucuyu uygulamanın içine gömer:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        // Gömülü Tomcat ile birlikte başlar!
        SpringApplication.run(MyApplication.class, args);
    }
}

Desteklenen gömülü sunucular: Tomcat (varsayılan), Jetty, Undertow, Netty (reactive).

Fat JAR (Uber JAR)

Spring Boot, tüm bağımlılıkları tek bir fat JAR (executable JAR) içinde paketler:

# Derleme
mvn clean package
# veya
./gradlew bootJar

# Çalıştırma — bu kadar basit!
java -jar myapp-1.0.0.jar

Bu JAR dosyası; uygulamanızı, tüm kütüphaneleri ve gömülü sunucuyu içerir. Docker container'larında çalıştırmak da çok kolaydır.

Auto-Configuration (Otomatik Konfigürasyon)

Spring Boot, classpath'teki kütüphaneleri tarayarak otomatik konfigürasyon yapar:

  • Classpath'te H2 var mı? → Otomatik in-memory DataSource oluştur

  • Classpath'te Spring MVC var mı? → DispatcherServlet ayarla

  • Classpath'te JPA var mı? → EntityManagerFactory oluştur

// @SpringBootApplication annotation'ı 3 annotation'ı birleştirir:
@SpringBootConfiguration  // = @Configuration
@EnableAutoConfiguration  // Otomatik konfigürasyon
@ComponentScan            // Component tarama
public class MyApplication { }

Spring Boot Tarihçesi

VersiyonYılÖne Çıkanlar
1.02014İlk sürüm: auto-config, starter, embedded server
1.52017Actuator iyileştirmeleri, Kotlin desteği
2.02018Spring 5 tabanlı, WebFlux, Micrometer metrics
2.72022Son 2.x sürümü, 3.x'e geçiş rehberi
3.02022Java 17+ zorunlu, Jakarta EE 9+, GraalVM native
3.12023Docker Compose desteği, SSL bundle
3.22023Virtual threads, RestClient, JdbcClient
3.32024CDS desteği, yapılandırılmış loglama

Spring Boot Olmadan vs Spring Boot İle

// ===== SPRING BOOT OLMADAN (web.xml + AppConfig + ...) =====
// 1) web.xml: DispatcherServlet tanımı
// 2) AppConfig.java: @EnableWebMvc, ViewResolver, MessageConverter
// 3) DataConfig.java: DataSource, EntityManager, TransactionManager
// 4) SecurityConfig.java: FilterChain tanımı
// 5) WAR paketleme + Tomcat deploy
// Toplam: ~200 satır konfigürasyon kodu

// ===== SPRING BOOT İLE =====
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
// Toplam: 6 satır + application.properties

Best Practices

İpucu: Yeni projelerinizde her zaman Spring Boot kullanın. Raw Spring Framework ile başlamak gereksiz karmaşıklık yaratır.

Uyarı: Spring Boot "sihir" yapmaz — sadece sizin yazmanız gereken konfigürasyonları otomatik yapar. Arka planda neler olduğunu bilmek, hata ayıklamada hayat kurtarır.

Özet

Spring Boot, Spring Framework'ün gücünü koruyarak geliştirme deneyimini dramatik şekilde iyileştiren bir araçtır. Starter dependencies, embedded server, fat JAR ve auto-configuration sayesinde dakikalar içinde production-ready uygulamalar oluşturabilirsiniz.