Başlangıç / Kurulum & Tanıma / Modül 00 — Spring Boot & MiniBank'a Giriş
Başlangıç Modül 00 Giriş & Kurulum Kod yazma yok

Spring Boot & MiniBank'a Giriş

Hoş geldin. Teknik detaya dalmadan önce kısa bir oryantasyon yapalım: bu eğitimde ne inşa edeceğiz, nasıl çalışacağız, ortamı nasıl kuracağız ve elimizdeki MiniBank iskeletini birlikte tanıyalım. Bu modülde kod yazmıyoruz — kuruyoruz ve haritayı çıkarıyoruz.

Süre
15 dk
Format
Kurulum + Tanıma
Branch
lab-00-base
Sonraki
Modül 01

Mini sözlük: Aynı dili konuşalım

Eğitim boyunca sık geçecek birkaç kelimeyi en baştan netleştirelim. Bu modülde derinleşmiyoruz; sadece kelimelerin ne anlama geldiğini oturtuyoruz.

SB

Spring Boot

Spring uygulamasını hızlı ve standart şekilde ayağa kaldırmamızı sağlayan framework'tür. Tekrar eden altyapı kararlarının çoğunu bizim yerimize verir.

MB

MiniBank

Eğitim boyunca adım adım geliştireceğimiz örnek bankacılık uygulamasıdır. Her modül bu tek ürünün üstüne yeni bir katman ekler.

LD

Lab Dashboard

MiniBank'in localhost:8080'de açılan kontrol panelidir. Her case'in görev listesi, doğrulama komutları ve referans kodu buradadır.

BR

Branch / Checkpoint

Her case'in bir start ve bir complete branch'i vardır. Bir case'in complete'i, bir sonrakinin start'ıdır — böylece herkes aynı noktadan devam eder.

JDK

JDK 17

Projeyi derlemek ve çalıştırmak için gereken Java sürümüdür. MiniBank Java 17 ile yazılmıştır.

MW

Maven Wrapper

./mvnw komutu, sistemde Maven kurulu olmasa bile projeyi doğru sürümle derleyip çalıştırır. Ayrı kurulum gerektirmez.

ES

Embedded Server

Spring Boot uygulaması harici bir sunucuya ihtiyaç duymadan kendi içindeki web server (Tomcat) ile ayağa kalkar.

ST

Starter

Bir özellik ailesini tek bağımlılıkla projeye ekleyen pakettir. Örneğin spring-boot-starter-web web katmanının ihtiyaçlarını birlikte getirir.

Bu eğitimde ne yapacağız?

Tek bir ürünü — MiniBank — sıfırdan production'a yakın bir olgunluğa kadar, 3 günde 11 modül boyunca birikimli olarak inşa edeceğiz.

Bu eğitim bağımsız örneklerden oluşmaz. Her modül bir öncekinin bıraktığı yerin üstüne yeni bir yetenek ekler: önce çekirdek servis katmanı, sonra web katmanı, en sonunda güvenlik, veri ve gözlemlenebilirlik. Modül sonunda elinde çalışan, anlamlı bir banka API'si olur — ezberlenmiş parçalar değil.

Gün 1 — Spring Core
  • 01 · Internal Mechanics
  • 02 · IoC & Bean Model
  • 03 · Spring AOP
Gün 2 — Web Layer
  • 04 · MVC Internals
  • 05 · REST API Properly
  • 06 · Exception Handling
  • 07 · Config & Profiles
Gün 3 — Production Basics
  • 08 · Spring Security
  • 09 · Data & Transactions
  • 10 · External API Calls
  • 11 · Observability
Birikimli yapı

Her case'in complete branch'i bir sonraki case'in start branch'idir. Bu yüzden geride kalsan bile bir sonraki modüle herkesle aynı noktadan girersin.

Spring Boot neden var?

Spring Boot'un temel vaadi sade: "Sen iş mantığına odaklan; uygulamayı ayağa kaldırmak için gereken standart parçaları ben hazırlayayım."

Bir web uygulaması yazmak sadece controller yazmak değildir. HTTP isteğini karşılayacak bir sunucu, isteği doğru metoda yönlendiren bir mekanizma, JSON dönüşümü, hata yönetimi, konfigürasyon okuma ve daha fazlası gerekir. Spring Boot bu tekrar eden parçaları yaygın ve güvenli varsayılanlarla hazırlar. Bu modülde sadece bu çerçeveyi tanıyoruz; nasıl çalıştığını Modül 01'de açacağız.

Convention over Configuration

Mantıklı varsayılanlar sayesinde her şeyi tek tek ayarlamak zorunda kalmazsın; sadece farklı olmasını istediğin yeri değiştirirsin.

Embedded Server

Uygulama kendi içindeki Tomcat ile ayağa kalkar; harici sunucu kurup deploy etme adımı ortadan kalkar.

Starter Bağımlılıkları

Bir özelliğin ihtiyaç duyduğu kütüphaneleri tek tek toplamak yerine tek bir starter ile getirirsin.

Bu modülde derinleşmiyoruz

Auto configuration, component scan ve bean lifecycle'ın nasıl çalıştığını burada açmıyoruz — o, Modül 01'in (Internal Mechanics) işidir. Şimdilik "Spring Boot bizim için neyi hallediyor" büyük resmini kurmak yeterli.

Nasıl çalışacağız?

Her modülde aynı ritmi izleyeceğiz: önce portalda öğren, sonra dashboard'da case'i aç, branch'i klonla, kendin yaz, test ile doğrula.

01
Portalda öğren
Modül anlatımını (şu an okuduğun gibi) oku, kavramları otur.
02
Dashboard'da case aç
Lab Dashboard'da ilgili case'in görev listesini ve doğrulama adımlarını gör.
03
Start branch'i al
git checkout lab-NN-start ile başlangıç noktasına geç.
04
Kendin yaz
Kodu sen yazarsın. Kopyala-yapıştır yok; takılırsan eğitmen paneli referanstır.
05
Test ile doğrula
./mvnw test yeşil olduğunda case tamamlanmıştır.
Checkpoint kuralı

Bir case'te geride kalırsan ilgili lab-NN-complete branch'ine geçip herkesle aynı checkpoint'ten devam edebilirsin. Kimse arkada kalmaz.

Geliştirme ortamı

Tek ihtiyacın JDK 17 ve projeyi klonlamak. Maven'ı ayrı kurmana gerek yok — proje kendi wrapper'ı (./mvnw) ile gelir.

  • JDK 17 kurulu (java -version ile doğrula).
  • Repoyu klonla ve proje dizinine gir.
  • lab-00-base branch'ine geç (boş MiniBank iskeleti).
  • Uygulamayı çalıştır ve localhost:8080'de ayağa kalkışını gör.
Ortamı hazırla & çalıştır
java -version            # 17 görmelisin
git checkout lab-00-base
./mvnw spring-boot:run   # uygulama localhost:8080'de ayağa kalkar

Uygulama ayağa kalktığında tarayıcıdan http://localhost:8080 adresini aç: Lab Dashboard'u göreceksin. http://localhost:8080/api/status ise uygulamanın UP olduğunu söyleyen basit bir JSON döner. Port 8080'dir (varsayılan; base projede henüz özel bir application.yml yoktur).

Araçlar & indirme linkleri

Eğitim için gereken ve işini kolaylaştıran araçlar. JDK 17, IntelliJ IDEA ve Git zorunlu; gerisi opsiyonel.

JDK

JDK 17 — Eclipse Temurin

Projeyi derleyip çalıştıran Java sürümü. Zorunlu.

İndir →
IDE

IntelliJ IDEA

Önerilen IDE. Community sürümü bu eğitim için yeterlidir. Zorunlu.

İndir →
GIT

Git

Repoyu klonlamak ve branch (checkpoint) geçişleri için. Zorunlu.

İndir →
MVN

Apache Maven · opsiyonel

Proje ./mvnw wrapper ile gelir; ayrı kurulum şart değil.

İndir →
API

Postman · opsiyonel

API isteklerini görsel denemek için (curl alternatifi).

İndir →
VSC

VS Code · alternatif

IntelliJ yerine kullanmak istersen, Java eklentileriyle.

İndir →
macOS / Linux kısayolu

JDK'yı paket yöneticisiyle de kurabilirsin: brew install temurin@17 (macOS Homebrew) veya SDKMAN ile sdk install java 17-tem.

Base project turu

lab-00-base bilinçli olarak neredeyse boş bir iskelettir: sadece uygulamanın ayağa kalkması ve dashboard'un servis edilmesi için gereken minimum vardır. Domain (hesap, müşteri, transfer…) henüz yoktur — onları modül modül biz ekleyeceğiz.

lab-00-base — gerçek yapı
minibank
├── pom.xml                          # Spring Boot 3.5.0 · Java 17
├── mvnw / mvnw.cmd                  # Maven Wrapper
└── src
    ├── main
    │   ├── java/com/definex/minibank
    │   │   ├── MiniBankApplication.java   # @SpringBootApplication (giriş noktası)
    │   │   └── web
    │   │       └── HomeController.java     # GET /api/status
    │   └── resources
    │       └── static
    │           └── index.html             # Lab Dashboard
    └── test/java/com/definex/minibank
        ├── MiniBankApplicationTests.java      # context ayağa kalkıyor mu
        └── MiniBankHomeControllerTests.java   # status + dashboard

Başlangıçta NE VAR?

Uygulama giriş noktası (MiniBankApplication), tek bir HomeController (/api/status), statik Lab Dashboard ve iki temel test. pom.xml'de yalnızca web, validation ve actuator starter'ları.

Henüz NE YOK?

Domain paketleri yok: account, customer, transfer, security, persistence gibi paketler eğitim ilerledikçe ilgili modüllerde eklenecek.

Paket kök kuralı

Tüm kod com.definex.minibank kök paketinin altında durur. MiniBankApplication bu kökte olduğu için, eklediğimiz her alt paket (account, customer …) otomatik olarak görülebilir konumda olur. Bunun neden böyle olduğunu Modül 01'de (component scanning) açacağız.

Lab Dashboard'da gör

Base project'i ve ilk çalıştırma adımlarını dashboard üzerinden de takip edebilirsin.

Lab Dashboard'da base project'i aç

Bu modülden akılda kalması gerekenler

1
Tek bir ürünü birikimli inşa ediyoruz.

11 modül, 3 gün; her case bir öncekinin üstüne ekler. Sonunda çalışan bir MiniBank API'si.

2
Çalışma ritmi sabit.

Portalda öğren → dashboard'da case aç → start branch → kendin yaz → test ile doğrula.

3
Checkpoint güvenliği var.

lab-NN-complete ile herkes aynı noktadan devam edebilir; kopyala-yapıştır değil, branch klonlanır.

4
Ortam minimum.

JDK 17 + ./mvnw spring-boot:run. Base proje localhost:8080'de ayağa kalkar.

5
Base bilinçli olarak boş.

Sadece MiniBankApplication + HomeController + dashboard var; domain paketlerini biz ekleyeceğiz.

Hazırsan başlayalım

Ortamın çalışıyor ve haritayı gördüysen, ilk teknik modüle geçebilirsin.

Modül 01 — Internal Mechanics'e Geç