SPRING BOOT NEDİR?
2000'lerin başında Java dünyasında bir uygulamayı ayağa kaldırmak demek, sayfalarca XML dosyasıyla boğuşmak demekti. Spring Framework güçlüydü ama her bean tanımı, her veri kaynağı, her transaction yöneticisi elle yazılan konfigürasyona bağlıydı. Pivotal ekibi 2014'te Spring Boot 1.0'ı yayımladığında ana hedef netti: Java geliştiricisinin saatlerini yiyen kurulum zahmetini ortadan kaldırmak. Spring Boot, "convention over configuration" felsefesini Java ekosistemine taşıyan ve mikroservis çağının zeminini hazırlayan araçtır.
XML Hell Dönemi ve Spring'in Doğuşu
2003'te Rod Johnson tarafından geliştirilen Spring Framework, J2EE'nin ağır EJB modeline alternatif olarak çıktı. Dependency Injection ve Inversion of Control prensiplerini Java'ya getirdi. Ancak başarısı, beraberinde bir maliyet getirdi: applicationContext.xml dosyaları yüzlerce satıra ulaştı. Bean tanımları, AOP yapılandırmaları, transaction manager'lar, view resolver'lar — hepsi tek tek elle yazılmak zorundaydı.
Geliştiriciler bu durumu "XML hell" olarak adlandırmaya başladı. Yeni bir proje kurmak günler sürüyor, küçük bir bağımlılık değişikliği XML'lerin baştan gözden geçirilmesini gerektiriyordu. Spring 3.0 ile Java tabanlı konfigürasyon (@Configuration) gelse de problem tam çözülmedi; bu sefer de hangi @Bean'i nereye koyacağını bilmek bir tecrübe meselesiydi. Daha fazla bilgi için ayrıntılı belgeleri başvurulabilir.
2014: Spring Boot 1.0 Çıkışı
Nisan 2014'te Pivotal, Spring Boot 1.0'ı yayımladı. Phil Webb ve Dave Syer'in öncülüğünde geliştirilen proje, üç temel vaatle geldi:
- Sıfır XML konfigürasyonu ile çalışan uygulama
- Embedded sunucu (Tomcat, Jetty, Undertow) — harici application server gerekmez
- Starter bağımlılıkları ile bir satırda tüm ekosistem entegrasyonu
Bu üç madde, Java backend geliştirme tarihinde bir kırılma noktasıydı. Artık main metodu olan bir JAR dosyası, içinde Tomcat ile birlikte production'a deploy edilebiliyordu. java -jar app.jar komutu yeterliydi.
Convention Over Configuration Felsefesi
Spring Boot'un kalbinde Ruby on Rails'ten ilham alan bir prensip yatar: makul varsayılanlar belirlersen, geliştirici sadece istisnaları yazar. Eğer classpath'te H2 varsa otomatik bir in-memory veritabanı kurulur. Eğer spring-boot-starter-web bağımlılığı eklenmişse Tomcat 8080'de başlar. Eğer application.properties'te server.port=9090 yazılmışsa o port kullanılır.

Bu yaklaşımın iki temel mekanizması vardır: auto-configuration ve starter dependencies. Auto-configuration, @ConditionalOnClass ve @ConditionalOnMissingBean gibi annotationlar sayesinde classpath'i tarayıp gerekli bean'leri otomatik üretir. Starter'lar ise (örneğin spring-boot-starter-data-jpa) tek bir bağımlılık satırıyla onlarca uyumlu kütüphaneyi getirir; sürüm çakışmalarını Pivotal ekibi sizin yerinize çözer.
Spring Boot ile Spring Framework Farkı
Yaygın bir kavram yanılgısı, Spring Boot'un Spring Framework'ün yerine geçtiğidir. Aslında Spring Boot, Spring Framework'ün üstüne kurulu bir katmandır:
- Spring Framework: Çekirdek — DI container, AOP, Spring MVC, Spring Data
- Spring Boot: Spring'i hızlı kullanmak için opinionated bir başlangıç noktası
- Spring Cloud: Spring Boot üzerine mikroservis araçları (Eureka, Config, Gateway)
Yani Spring Boot, Spring'i ortadan kaldırmaz; sadece onu kullanılabilir hale getirir. Geliştirici hâlâ @Service, @Repository, @Autowired annotationlarını aynı şekilde kullanır — sadece kurulum zahmeti yoktur.
Mikroservis Çağına Açılan Kapı
2014-2016 yılları, Netflix'in OSS araçlarını açtığı ve mikroservis mimarisinin popülerleştiği dönemdi. Her servisin bağımsız çalışan küçük bir JAR olması gereken bu mimaride, embedded sunuculu Spring Boot uygulamaları doğal bir tercih oldu. Docker konteynerlerine sığacak boyutta, hızlı başlayan, kendi içinde her şeyi taşıyan yapı tam aranan profildi.
Bugün dünyanın en büyük teknoloji şirketlerinin — Netflix, Alibaba, ING Bank, JPMorgan — backend altyapılarının önemli bir kısmı Spring Boot üzerine kuruludur. JVM ekosisteminde Java backend dediğinizde insanların aklına ilk gelen şey artık Spring Boot'tur.
Bugünkü Sürümler ve Ekosistem
Spring Boot 3.x sürümleri Java 17+ ve Jakarta EE 9+ üzerine inşa edildi. Native image desteği (GraalVM ile) sayesinde uygulamalar milisaniyelerde başlayabiliyor. Observability için Micrometer entegrasyonu, güvenlik için Spring Security, reactive programlama için WebFlux artık standart parçalar.
Spring Boot'u sıfırdan öğrenmek ve REST API'den JPA'ya kadar uçtan uca proje geliştirmek için Spring Boot eğitimi içeriklerinden yararlanabilirsiniz. Pratik örneklerle ilerleyerek annotation'ların nasıl çalıştığını ve auto-configuration'ın arka planda neler yaptığını görmek, framework'ü gerçekten anlamanın en kısa yolu.

Sonuç olarak Spring Boot, Java'nın 20 yıllık konfigürasyon yorgunluğuna verdiği yanıttır. Bir framework değil, Spring'i kullanılabilir kılan bir konvansiyon katmanıdır. 2014'teki çıkışından bu yana Java backend geliştirme deneyimini kökten değiştirdi ve günümüzde de mikroservis mimarisinin Java tarafındaki fiilî standardı olmaya devam ediyor.



