İ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:
Tarayıcıda [start.spring.io](https://start.spring.io) adresine gidin
Aşağıdaki ayarları yapın:
| Ayar | Değer |
|---|---|
| Project | Maven |
| Language | Java |
| Spring Boot | 3.3.x (en güncel stable) |
| Group | com.example |
| Artifact | demo |
| Packaging | Jar |
| Java | 21 |
Dependencies bölümünden ekleyin:
- Spring Web — REST API için - Spring Boot DevTools — Hot reload için
Generate butonuna tıklayın → ZIP indirilir
# ZIP'i açın ve proje dizinine girin
unzip demo.zip
cd demoIDE Setup
IntelliJ IDEA (Önerilen)
File → Open →
demoklasörünü seçinMaven import otomatik başlar
DemoApplication.javadosyasını bulun → sağ tık → Run
VS Code
Extension Pack for Java ve Spring Boot Extension Pack kurun
Klasörü açın
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/helloyoluna 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:runGradle Wrapper ile
./gradlew bootRunJAR olarak
./mvnw clean package
java -jar target/demo-0.0.1-SNAPSHOT.jarUygulama başladığında şunu göreceksiniz:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.3.x)
Started DemoApplication in 1.8 secondsTest 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ı:
@RestControllerile@Controllerfarkına dikkat edin.@RestController = @Controller + @ResponseBody. Eğer HTML sayfa döndürecekseniz@Controllerkullanı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!
AI Asistan
Sorularını yanıtlamaya hazır