MiniBank / Eğitim Portalı / Gün 1-3
API Durumu Modüllere Git
3 gün İleri Spring Boot Adım adım ürün geliştirme

MiniBank Eğitim Portalı

Bu ekran, eğitmenin konuları anlatırken sınıfla birlikte kullanacağı ana portaldır. Her modül önce kavramı açıklar, sonra MiniBank üzerinde kontrollü bir üretim adımı yapar. Modül sonunda ortaya çıkan kod, ayrı MiniBank repo'sunda bir sonraki modülün başlangıç noktası olur.

Uygulama
MiniBank
Çalışma modeli
Branch checkpoint
Minimum sürüm
JDK 17 LTS
Çalıştırma
Maven Wrapper

Konudan ürüne giden on bir hazır modül

Her modülün sonunda MiniBank biraz daha gerçek bir uygulamaya dönüşür. Katılımcı, MiniBank repo'sunda başlangıç branch'ini çekip sınıfla birlikte üretim yapar; geride kalırsa tamamlanmış branch'e geçip aynı noktadan devam eder.

Başlangıç

Spring Boot & MiniBank'a Giriş

00

Eğitime giriş: ne yapacağız, nasıl çalışacağız, ortam kurulumu ve boş MiniBank iskeletini ilk kez ayağa kaldırma. Bu modülde kod yazılmaz — kurulur ve tanınır.

Başlangıç
lab-00-base
Format
Kurulum + Tanıma
  • 3 gün / 11 modül / tek ürün yolculuğu.
  • Portal → dashboard → branch → yaz → test akışı.
  • Base project turu ve ilk çalıştırma.
Modülü Aç
Modül 01

Spring Boot Internal Mechanics

01

Spring Boot'un auto configuration, component scanning, ApplicationContext, bean lifecycle ve constructor injection davranışlarını MiniBank üzerinden anlatır.

Başlangıç
lab-01-start
Üretim çıktısı
lab-01-complete
  • Account ve Customer servis katmanı oluşur.
  • Bean discovery ve constructor injection görünür hale gelir.
  • @PostConstruct ile lifecycle gözlemlenir.
Modülü Aç
Modül 02

IoC & Bean Model

02

IoC, BeanDefinition, scope mantığı, lazy initialization ve prototype bean'in singleton içinde doğru kullanımı anlatılır.

Başlangıç
lab-02-start
Üretim çıktısı
lab-02-complete
  • Prototype scoped ReferenceNumberGenerator eklenir.
  • Operasyon servisleri ObjectProvider ile taze instance ister.
  • MiniBank operasyon referansı üretebilir hale gelir.
Modülü Aç
Modül 03

Spring AOP

03

Cross-cutting concern, aspect, advice, pointcut, proxy modeli, @Around, @Transactional ilişkisi ve self-invocation riski MiniBank audit logging case'i ile anlatılır.

Başlangıç
lab-03-start
Üretim çıktısı
lab-03-complete
  • @Auditable annotation ve AuditAspect eklenir.
  • Account ve Customer operasyonları AOP audit log üretir.
  • Self-invocation ve proxy davranışı pratik bağlama oturur.
Modülü Aç
Modül 04

Spring MVC Internals

04

DispatcherServlet, HandlerMapping, HandlerAdapter, HttpMessageConverter ve custom argument resolver akışı MiniBank CurrentUser case'i ile anlatılır.

Başlangıç
lab-04-start
Üretim çıktısı
lab-04-complete
  • CurrentUserArgumentResolver eklenir.
  • WebMvcConfigurer ile MVC akışına register edilir.
  • Account ve Customer endpoint'leri request header bilgisini parametre olarak alır.
Modülü Aç
Modül 05

REST API Development Properly

05

REST mental model, @RestController best practices, DTO pattern, validation, proper HTTP status codes ve mapping kararları MiniBank API case'i ile anlatılır.

Başlangıç
lab-05-start
Üretim çıktısı
lab-05-complete
  • Account API request/response DTO ve validation ile yazılır.
  • Customer API aynı pattern ile tamamlanır.
  • Endpoint'ler doğru HTTP status code ile cevap verir.
Modülü Aç
Modül 06

Exception Handling Fundamentals

06

Spring MVC exception resolver flow, @RestControllerAdvice, business/technical exception ayrımı, validation error response ve standart error contract tasarımı MiniBank üzerinde anlatılır.

Başlangıç
lab-06-start
Üretim çıktısı
lab-06-complete
  • GlobalExceptionHandler ile standart hata response'u oluşturulur.
  • Account ve Customer business exception'ları API contract'a çevrilir.
  • Validation hataları field bazlı okunabilir response döner.
Modülü Aç
Modül 07

Configuration & Profiles

07

Configuration ihtiyacı, application.yml best practices, profile-based config, @ConfigurationProperties, environment variable override ve secret yönetimi MiniBank üzerinde anlatılır.

Başlangıç
lab-07-start
Üretim çıktısı
lab-07-complete
  • Dev/prod config dosyaları ayrıştırılır.
  • TransferProperties ve FraudProperties typed config olarak bağlanır.
  • Customer limit davranışı config üzerinden yönetilir.
Modülü Aç
Modül 08

Spring Security Basics

08

Spring Security'nin ne işe yaradığı, authentication/authorization ayrımı, SecurityFilterChain, stateless JWT flow, bearer token, BCrypt ve method-level security MiniBank üzerinde anlatılır.

Başlangıç
lab-08-start
Üretim çıktısı
lab-08-complete
  • /api/auth/login bearer token üretir.
  • Account ve Customer endpoint'leri JWT ile korunur.
  • ADMIN-only customer endpoint'i role-based access ve @PreAuthorize ile doğrulanır.
Modülü Aç
Modül 09

Data Access & Transaction Management

09

JPA, entity/repository modeli, persistence context, lazy/eager loading, N+1 optimizasyonu ve transaction propagation kararları MiniBank üzerinde anlatılır.

Başlangıç
lab-09-start
Üretim çıktısı
lab-09-complete
  • Account history ilişkileri JPA entity ve repository ile modellenir.
  • N+1 davranışı fetch join / @EntityGraph yaklaşımıyla optimize edilir.
  • Transfer audit kaydı REQUIRES_NEW propagation ile örneklenir.
Modülü Aç
Modül 10

External API Call Basics

10

External API boundary, WebClient, client configuration, timeout, retry, idempotency, error mapping ve transaction sınırı MiniBank Fraud Check case'i ile anlatılır.

Başlangıç
lab-10-start
Üretim çıktısı
lab-10-complete
  • FraudCheckClient external client pattern'i ile yazılır.
  • Timeout ve retry configuration üzerinden yönetilir.
  • Transfer akışı fraud check'i transaction başlamadan çağırır.
Modülü Aç
Modül 11

Basic Observability Awareness

11

Observability vs monitoring ayrımı, Actuator endpoint mantığı, health/info/metrics/loggers, custom health, liveness/readiness, runtime log level ve correlation ID MiniBank final case'i ile anlatılır.

Başlangıç
lab-11-start
Final çıktı
lab-11-complete
  • Actuator endpoint'leri production farkındalığıyla açılır.
  • Custom health indicator ve liveness/readiness davranışı gözlemlenir.
  • X-Correlation-Id request, response ve log arasında ortak iz olur.
Modülü Aç

Branch listesi değil, sınıfın emniyet hattı

Buradaki amaç bütün branch'leri ezberletmek değil; herkesin aynı anda aynı MiniBank kod tabanında kalmasını sağlamaktır. Her modül kartında kendi start/complete branch'i zaten var. Bu bölüm sadece çalışma kuralını netleştirir.

Tek kural

Complete branch, sonraki start branch'in kod durumudur.

lab-08-complete = lab-09-start

Katılımcı yeni modüle başlarken ilgili start branch'i çeker; geride kalırsa aynı modülün complete branch'i güvenli devam noktasıdır.

01

Başlarken

Modül kartındaki lab-XX-start branch'i çekilir ve canlı kod oradan başlar.

02

Takılınca

İlgili lab-XX-complete branch'i herkes için aynı kurtarma noktasıdır.

03

Bitirince

Complete branch bir sonraki modülün start branch'i olarak kabul edilir.

Gün 1

Foundation

lab-01-start -> lab-03-complete

Spring Core, IoC/Bean Model ve AOP zemini kurulur.

Gün 2

Web Layer

lab-04-start -> lab-07-complete

MVC, REST contract, exception handling ve configuration çizgisi tamamlanır.

Gün 3

Production Basics

lab-08-start -> lab-11-complete

Security, data/transaction, external API ve observability ile MiniBank final hale gelir.

Kısa cevap

Branch haritasını ezberlemeye gerek yok. Hangi modüldeysen modül kartındaki start branch'iyle başla; yetişemezsen complete branch'e geç; sonraki modül aynı kod durumundan devam eder.

Konu anlatımı MiniBank üretimine bağlanır

01
Kavramı anlat
Önce ne işe yaradığını ve pratikte hangi problemi çözdüğünü konuş.
02
Spring karşılığını göster
Annotation, container davranışı ve runtime etkisini sade örnekle açıkla.
03
MiniBank'e uygula
Sınıfla birlikte küçük ama gerçek bir geliştirme adımı üret.
04
Kabul kriteriyle kapat
Kodun çalıştığını, testin geçtiğini ve öğrenme hedefinin karşılandığını doğrula.
05
Sonraki başlangıca taşı
Tamamlanmış kod bir sonraki modülün başlangıç branch'i olur.
A

Anlatım

Katılımcı önce kavramın ne işe yaradığını anlar. İç detaylar, kullanım amacından sonra gelir.

B

Guided Lab

Lab bir sürpriz problem değil; eğitmenle birlikte ilerleyen kontrollü bir MiniBank geliştirmesidir.

C

Ürünleşme

Her modül sonunda MiniBank yeni bir yetenek kazanır ve sonraki modül bu yeteneğin üstüne kurulur.

Eğitmen ve katılımcı komutları

Hem eğitim portalı hem de MiniBank lab repo'su Maven Wrapper içerir. Bu yüzden katılımcı makinesinde ayrıca Maven kurulu olması gerekmez. Minimum Java sürümü JDK 17 LTS'tir.

macOS / Linux

Uygulamayı başlat
./mvnw spring-boot:run \
  -Dspring-boot.run.arguments=--server.port=8081
Testleri çalıştır
./mvnw test

Windows PowerShell

Uygulamayı başlat
.\mvnw.cmd spring-boot:run `
  -Dspring-boot.run.arguments=--server.port=8081
Testleri çalıştır
.\mvnw.cmd test
Geride kalırsan

Lab sırasında yetişemezsen ilgili complete branch'e geç ve herkesle aynı checkpoint'ten devam et. Bu komutları MiniBank repo klasöründe çalıştır.

Toparlanma komutları
# MiniBank repo klasöründe
git checkout lab-01-complete
git checkout lab-02-complete
git checkout lab-03-complete
git checkout lab-04-complete
git checkout lab-05-complete
git checkout lab-06-complete
git checkout lab-07-complete
git checkout lab-08-complete
git checkout lab-09-complete
git checkout lab-10-complete
git checkout lab-11-complete

Ekrandan anlatılacak ritim

40 dk

Kavram anlatımı

Modül sayfası açılır; konu temel kullanım amacından başlayarak senior farkındalık seviyesine kadar ilerler.

25 dk

MiniBank guided lab

Katılımcılar start branch'ini çeker, eğitmenle birlikte kodu üretir ve kabul kriterlerini doğrular.

5 dk

Takeaway ve mini quiz

Modülün ürün çıktısı netleştirilir; complete branch bir sonraki modülün başlangıç noktası olarak gösterilir.