Java ile backend uygulamaları geliştirirken en sık karşılaşılan teknolojilerden biri Spring Boot’tur. Özellikle REST API, mikroservis ve kurumsal uygulama geliştirme süreçlerinde yaygın olarak kullanılır.
Spring Boot, Spring Framework üzerine geliştirilmiş, Java uygulamalarının daha hızlı ve kolay şekilde oluşturulmasını sağlayan bir framework’tür. Otomatik yapılandırma, hazır bağımlılık paketleri ve gömülü sunucu desteği sayesinde geliştiricilerin uygulama altyapısıyla daha az uğraşmasını sağlar.
Bu yazıda Spring Boot’un ne olduğunu, neden kullanıldığını, temel özelliklerini ve basit bir REST API uygulamasının nasıl oluşturulacağını inceleyeceğiz.
Spring Boot Nedir?
Spring Boot, Java ile bağımsız (standalone), production ortamına uygun uygulamalar geliştirmeyi kolaylaştıran bir teknolojidir.
Spring Framework kullanılarak uygulama geliştirirken birçok yapılandırmayı manuel olarak yapmak gerekebilir. Spring Boot ise bu işlemlerin önemli bir bölümünü otomatikleştirir.
Örneğin Spring Boot kullanarak bir REST API geliştirdiğimizde ayrıca Tomcat sunucusu kurup yapılandırmamız gerekmez. Spring Boot, uygun web starter bağımlılığı kullanıldığında gömülü Tomcat sunucusuyla birlikte çalışabilir.
Spring Boot’un temel amacı geliştiricinin işini kolaylaştırmak, başlangıç yapılandırmalarını azaltmak ve uygulamayı hızlı şekilde çalıştırabilmektir.
Spring Framework ve Spring Boot Arasındaki Fark Nedir?
Spring Framework, Java uygulamaları geliştirmek için kullanılan kapsamlı bir framework’tür. Dependency Injection, Spring MVC, veri erişimi ve transaction yönetimi gibi birçok özelliğe sahiptir.
Spring Boot ise Spring Framework’ün kullanımını kolaylaştıran bir araç ve yapılandırma yaklaşımı sunar.
| Spring Framework | Spring Boot |
|---|---|
| Yapılandırmalar daha fazla manuel işlem gerektirebilir. | Otomatik yapılandırma özellikleri sunar. |
| Sunucu yapılandırması ayrıca yapılabilir. | Gömülü sunucu desteği sağlar. |
| Bağımlılıklar manuel olarak seçilip eklenebilir. | Starter bağımlılıkları sunar. |
| Proje başlangıç yapılandırması daha uzun sürebilir. | Hızlı proje oluşturmayı kolaylaştırır. |
Özetle Spring Boot, Spring Framework’ün yerine geçen bir teknoloji değildir. Spring Framework üzerine kuruludur ve onunla çalışmayı kolaylaştırır.
Spring Boot’un Temel Özellikleri
Spring Boot’un backend geliştirme süreçlerinde tercih edilmesini sağlayan bazı önemli özellikleri bulunmaktadır.
1. Auto Configuration
Auto Configuration, uygulamanın classpath, eklenen bağımlılıklar ve tanımlanan yapılandırmalara göre bazı bileşenlerin otomatik olarak yapılandırılmasını sağlar.
Örneğin projeye spring-boot-starter-web bağımlılığını eklediğimizde Spring Boot, web uygulaması için gerekli yapılandırmaların önemli bir bölümünü otomatik olarak gerçekleştirir.
Bu sayede birçok ayarı manuel olarak yapmak zorunda kalmayız.
2. Starter Dependencies
Spring Boot, farklı ihtiyaçlar için hazır bağımlılık grupları sunar. Bunlara Starter Dependencies denir.
Sık kullanılan bazı starter paketleri:
spring-boot-starter-web: REST API ve web uygulamaları geliştirmek için kullanılır.spring-boot-starter-data-jpa: JPA üzerinden veritabanı işlemleri için kullanılır.spring-boot-starter-security: Uygulama güvenliği ve kimlik doğrulama işlemleri için kullanılır.spring-boot-starter-validation: Veri doğrulama işlemleri için kullanılır.spring-boot-starter-test: Test geliştirme süreçlerinde kullanılır.spring-boot-starter-actuator: Uygulama sağlığı ve izleme bilgileri sunar.
Starter paketleri, ihtiyaç duyulan bağımlılıkları birlikte yönetmeyi kolaylaştırır.
3. Embedded Server
Spring Boot uygulamaları gömülü sunucu ile çalışabilir. Örneğin Tomcat, uygulamanın içerisinde çalıştırılabilir.
Bu sayede ayrıca bir Tomcat sunucusu kurup WAR dosyası deploy etmek zorunda kalmadan uygulamayı çalıştırabiliriz.
Uygulamayı çalıştırmak için:
./mvnw spring-boot:run
Uygulama paketlendikten sonra JAR dosyası üzerinden de başlatılabilir:
java -jar target/application.jar
4. Spring Boot Actuator
Actuator, çalışan uygulamanın sağlık ve çalışma durumu hakkında bilgi edinmemizi sağlar.
Örneğin uygulamanın ayakta olup olmadığını kontrol etmek için health endpoint’i kullanılabilir.
GET /actuator/health
Örnek yanıt:
{
"status": "UP"
}
Actuator; health check, metrics ve uygulama bilgileri gibi operasyonel özellikler sunar. Production ortamında hangi endpoint’lerin dışarıya açılacağı güvenlik açısından dikkatli yapılandırılmalıdır.
5. External Configuration
Spring Boot, uygulama ayarlarını koddan ayrı tutmamızı sağlar.
Örneğin veritabanı bağlantı bilgileri application.properties dosyasında tanımlanabilir:
spring.datasource.url=jdbc:postgresql://localhost:5432/springdb
spring.datasource.username=postgres
spring.datasource.password=123456
server.port=8080
Alternatif olarak YAML formatı da kullanılabilir:
server:
port: 8080
spring:
datasource:
url: jdbc:postgresql://localhost:5432/springdb
username: postgres
password: 123456
Gerçek projelerde şifre gibi hassas bilgileri doğrudan Git’e gönderilen yapılandırma dosyalarında tutmak yerine environment variable veya secret yönetimi tercih edilmelidir.
Spring Boot Proje Yapısı
Spring Boot ile geliştirilen bir REST API projesinde katmanlı mimari kullanılabilir.
Örnek proje yapısı:
src
└── main
├── java
│ └── com.example.demo
│ ├── controller
│ ├── service
│ ├── repository
│ ├── entity
│ └── DemoApplication.java
│
└── resources
└── application.properties
Katmanların görevleri:
- Controller: HTTP isteklerini karşılar ve uygun yanıtı döndürür.
- Service: İş kurallarının ve uygulama mantığının bulunduğu katmandır.
- Repository: Veritabanı erişim işlemlerini gerçekleştirir.
- Entity: Veritabanındaki tabloları temsil eden nesneleri tanımlar.
- Application: Spring Boot uygulamasının başlangıç sınıfıdır.
Bu yapı, uygulamanın sorumluluklarını birbirinden ayırarak kodun daha kolay yönetilmesini sağlar.
Spring Boot ile İlk REST API Örneği
Şimdi Spring Boot kullanarak basit bir REST API oluşturalım.
İlk olarak uygulamanın başlangıç sınıfını oluşturalım:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication anotasyonu, Spring Boot uygulamasının temel yapılandırmasını sağlar. Otomatik yapılandırma, component scanning ve Spring konfigürasyon özelliklerini bir araya getirir.
Şimdi bir Controller oluşturalım:
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
Uygulamayı başlattığımızda aşağıdaki adrese GET isteği gönderebiliriz:
http://localhost:8080/api/hello
Dönen yanıt:
Hello Spring Boot!
Bu örnekte:
@RestController: Sınıfın REST API controller’ı olduğunu belirtir.@RequestMapping: Controller için temel URL yolunu tanımlar.@GetMapping: HTTP GET isteğini ilgili metoda yönlendirir.
Bu şekilde Spring Boot ile birkaç adımda çalışan bir REST API geliştirebiliriz.
Spring Boot Hangi Alanlarda Kullanılır?
Spring Boot farklı türde backend uygulamalarında kullanılabilir.
REST API geliştirme: Web ve mobil uygulamaların ihtiyaç duyduğu backend servislerini oluşturmak için kullanılır.
Microservices: Bağımsız servisler geliştirmek ve bu servisleri birbirleriyle haberleştirmek için tercih edilir.
Veritabanı uygulamaları: Spring Data JPA, JDBC ve diğer veri erişim teknolojileriyle veritabanı işlemleri gerçekleştirilebilir.
Event-Driven Architecture: Kafka ve RabbitMQ gibi mesajlaşma sistemleriyle entegre uygulamalar geliştirilebilir.
Kurumsal uygulamalar: Güvenlik, transaction yönetimi, veri erişimi ve entegrasyon ihtiyaçları bulunan büyük ölçekli uygulamalarda kullanılabilir.
Sonuç
Spring Boot, Java ile backend uygulamaları geliştirmeyi kolaylaştıran güçlü bir teknolojidir. Spring Framework üzerine kurulmuş olması sayesinde Dependency Injection, Spring MVC ve veri erişimi gibi özelliklerden yararlanır.
Auto Configuration, Starter Dependencies, Embedded Server ve Actuator gibi özellikleri sayesinde uygulama geliştirme sürecini hızlandırır.
Özellikle REST API ve mikroservis geliştirmek isteyen Java geliştiricileri için Spring Boot öğrenmek önemli bir adımdır.
Sık Sorulan Sorular
Spring Boot hangi programlama diliyle kullanılır?
Spring Boot temel olarak Java ile kullanılır. Kotlin ve Groovy gibi JVM dillerinde de kullanılabilir.
Spring Boot ücretsiz midir?
Evet. Spring Boot, açık kaynaklı ve Apache License 2.0 lisansına sahip bir projedir.
Spring Boot öğrenmek için Java bilmek gerekir mi?
Evet. Spring Boot öğrenmeden önce Java’nın temel konularını, OOP prensiplerini, Collections, Exception Handling ve temel SQL bilgilerini öğrenmek faydalıdır.
Spring Boot ile REST API geliştirilebilir mi?
Evet. Spring MVC ve @RestController gibi özellikler kullanılarak REST API geliştirilebilir.
Spring Boot olmadan Spring Framework kullanılabilir mi?
Evet. Spring Boot olmadan da Spring Framework kullanılabilir. Ancak birçok yapılandırmanın manuel olarak yapılması gerekebilir.
Spring Boot mikroservis geliştirmek için uygun mudur?
Evet. Spring Boot, bağımsız servislerin geliştirilmesinde yaygın olarak kullanılır. Spring Cloud gibi ek teknolojilerle birlikte servis keşfi, merkezi yapılandırma ve dağıtık sistem ihtiyaçları da karşılanabilir.
Resmi Spring Boot Dokümantasyonu
Spring Boot özellikleri, yapılandırmaları ve kullanım örnekleri hakkında daha fazla bilgi edinmek için resmi dokümantasyonu inceleyebilirsiniz:
Spring Boot Official Documentation
![]()