MiniBank / Eğitim Portalı / Gün 1-3
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ı, eğitmenin açtığı private lab repository'sini klonlar ve sınıfla birlikte üretim yapar. Sonraki lab repository'si yalnız sırası geldiğinde açılır.

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ç

Her lab için tek private repository

Katılımcı branch listesiyle uğraşmaz. Eğitmen yönetim panelinden sıradaki repository'yi açar; katılımcı yalnız erişime açılmış lab'ları görür ve her repository'nin main branch'i üzerinde yerel olarak çalışır.

Tek kural

Sıradaki lab yalnız eğitmen açtığında görünür.

MiniBank-Lab-08 → MiniBank-Lab-09

Çekirdek görevler ve checkpoint testleri tamamlanınca eğitmen sıradaki repository'yi açar. İleri çalışmalar bu geçişi engellemez.

01

Başlarken

Erişime açılan MiniBank-Lab-XX repository'si klonlanır.

02

Çalışırken

Learning mode eksik kodu [WARN] NOT_IMPLEMENTED ile gösterir ve build'i kesmez.

03

Bitirince

Checkpoint mode yanlış davranışı fail eder; yeşil sonuçtan sonra sıradaki lab açılır.

Gün 1

Foundation

MiniBank-Lab-01 → 03

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

Gün 2

Web Layer

MiniBank-Lab-04 → 07

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

Gün 3

Production Basics

MiniBank-Lab-08 → 11

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

Kısa cevap

Panelden açılan lab'ı klonla, çekirdek görevleri tamamla ve checkpoint testini yeşile getir. Referans çözüm yalnız eğitmen tarafından case kapanışında gösterilir.

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
Checkpoint ile kapat
Çekirdek testler yeşil olduğunda eğitmen sıradaki lab repository'sini açar.
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

Learning mode eksik uygulamayı uyarı olarak gösterir. Case sonunda checkpoint mode'u çalıştır; takılırsan eğitmen yönlendirmesi ve case kapanışındaki referans çözümle aynı noktaya gel.

Doğrulama komutları
# Çalışırken: eksik scaffold uyarı verir, build devam eder
./mvnw test -Dminibank.lab.mode=learning -Dtest=MiniBankLabCheckpointTests

# Bitirirken: yanlış veya eksik davranış fail olur
./mvnw test -Dminibank.lab.mode=checkpoint -Dtest=MiniBankLabCheckpointTests

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 açılan lab repository'sini klonlar, 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; checkpoint testleri ve sonraki repository erişimi açıklanır.