← Kursa Dön
📄 Text · 20 min

İlk Spring Boot Projesi

Giriş

Teoriyi yeterince gördük, şimdi ellerimizi kirletme zamanı! Bu derste sıfırdan bir Spring Boot projesi oluşturacak, yapılandıracak ve ilk REST endpoint'imizi yazacağız. Adım adım ilerleyeceğiz.

Spring Initializr ile Proje Oluşturma

start.spring.io Spring Boot projesi oluşturmanın en kolay yoludur:

  1. Tarayıcıda [start.spring.io](https://start.spring.io) adresine gidin

  2. Aşağıdaki ayarları yapın:

AyarDeğer
ProjectMaven
LanguageJava
Spring Boot3.3.x (en güncel stable)
Groupcom.example
Artifactdemo
PackagingJar
Java21
  1. Dependencies bölümünden ekleyin:

- Spring Web — REST API için - Spring Boot DevTools — Hot reload için

  1. Generate butonuna tıklayın → ZIP indirilir

# ZIP'i açın ve proje dizinine girin
unzip demo.zip
cd demo

IDE Setup

IntelliJ IDEA (Önerilen)

  1. File → Open → demo klasörünü seçin

  2. Maven import otomatik başlar

  3. DemoApplication.java dosyasını bulun → sağ tık → Run

VS Code

  1. Extension Pack for Java ve Spring Boot Extension Pack kurun

  2. Klasörü açın

  3. Terminal'den ./mvnw spring-boot:run

İlk Hello World Controller

package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Merhaba Spring Boot!";
    }

    @GetMapping("/greet")
    public String greet(@RequestParam(defaultValue = "Dünya") String name) {
        return "Merhaba, " + name + "!";
    }
}
  • @RestController: Bu sınıfın bir REST controller olduğunu belirtir

  • @GetMapping("/hello"): HTTP GET isteğini /hello yoluna eşler

  • @RequestParam: Query parameter okur (örn: /greet?name=Ali)

Projeyi Çalıştırma

Maven Wrapper ile

# Linux/macOS
./mvnw spring-boot:run

# Windows
mvnw.cmd spring-boot:run

Gradle Wrapper ile

./gradlew bootRun

JAR olarak

./mvnw clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar

Uygulama başladığında şunu göreceksiniz:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.3.x)

Started DemoApplication in 1.8 seconds

Test Etme

# Basit GET isteği
curl http://localhost:8080/hello
# Çıktı: Merhaba Spring Boot!

curl "http://localhost:8080/greet?name=Ali"
# Çıktı: Merhaba, Ali!

Tarayıcınızda da http://localhost:8080/hello adresine gidebilirsiniz.

Hot Reload — Spring Boot DevTools

DevTools bağımlılığı ekliyse, kod değişikliklerinde uygulama otomatik yeniden başlar:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
  • Dosya kaydettiğinizde otomatik restart (~1-2 sn)

  • Static resources (HTML/CSS/JS) için restart gerekmez

  • Production'da DevTools otomatik devre dışı kalır

IntelliJ'de aktifleştirme: Settings → Build → Compiler → "Build project automatically" ✓

JSON Response Döndürme

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

    @GetMapping("/user")
    public Map<String, Object> getUser() {
        Map<String, Object> user = new HashMap<>();
        user.put("id", 1);
        user.put("name", "Ali Yılmaz");
        user.put("email", "ali@example.com");
        return user; // Otomatik JSON'a çevrilir!
    }
}

Spring Boot, classpath'te Jackson kütüphanesi varsa (starter-web ile gelir) Java objelerini otomatik olarak JSON'a çevirir.

Best Practices

İpucu: Projeyi her zaman Maven/Gradle Wrapper (mvnw/gradlew) ile çalıştırın. Böylece tüm ekip aynı build tool versiyonunu kullanır.

Uyarı: @RestController ile @Controller farkına dikkat edin. @RestController = @Controller + @ResponseBody. Eğer HTML sayfa döndürecekseniz @Controller kullanın.

Özet

Bu derste start.spring.io ile proje oluşturduk, IDE'yi yapılandırdık, ilk REST endpoint'lerimizi yazdık ve DevTools ile hot reload deneyimini yaşadık. Artık bir Spring Boot uygulamasını sıfırdan ayağa kaldırabilirsiniz!