Spring Boot 3D logosu yanında Spring starter küpü ve yaprak vurgusu bembeyaz arka planda premium kompozisyon

Spring Boot eğitimi, framework'ü "annotation Bonanza" olmaktan çıkartıp opinionated ekosistemi bilinçle kullanan mühendisler yetiştirir. Auto-configuration ve starter dependencies mantığı sezgisel anlatılır; Spring Initializr ile proje üretimi ve opinionated yaklaşım tartışılır biçimde uygulanır.

Eğitim sonunda katılımcı, Spring Data JPA ile repository pattern ve query method yazar; Spring Security ile authentication, authorization ve OAuth2 kurar; Spring Cloud (Config, Eureka, Gateway) ile microservice ekosistemi inşa eder. Actuator ile observability ve GraalVM Native Image ile hızlı startup eğitimin operasyonel tarafıdır. Eğitim materyalleri Spring Boot belgeleri ile uyumlu hazırlanmıştır.

Katılımcı Profili

Bu eğitim, Spring Boot'u opinionated ekosistemi bilinçle kullanmak isteyen rollere yöneliktir:

  • Java Geliştiriciler: Spring Boot ile servis yazan mühendisler
  • Backend Mühendisleri: Spring ekosisteminde çalışan ve genişleten roller
  • Solution Architect'ler: Spring tabanlı mimari tasarlayan ekipler
  • DevOps Mühendisleri: Spring Boot uygulamasını container'a ve K8s'e taşıyanlar
  • Junior Java Geliştiriciler: Spring Boot ile production'a giriş yapan roller

Ön Gereklilikler

Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:

  • Java ile temel uygulama geliştirme deneyimi
  • OOP kavramlarına (class, inheritance, interface) rahatlık
  • HTTP, REST API ve JSON kavramlarına aşinalık
  • SQL ile temel sorgulama bilgisi
  • Maven veya Gradle ile build süreci bilgisi

Süresi ve Tarihi

Süre: 4 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.

Kazanımlar

Bu eğitim sonunda katılımcı, Spring Boot'u "annotation Bonanza" olmaktan çıkartıp opinionated ekosistemi bilinçle kullanır:

  • Auto-configuration ve starter dependencies mantığını sezgisel anlatır
  • Spring Initializr ile proje üretir; opinionated yaklaşımı tartışılır biçimde uygular
  • Spring Data JPA ile repository pattern ve query method yazar
  • Spring Security ile authentication, authorization ve OAuth2 kurar
  • Spring Cloud (Config, Eureka, Gateway) ile microservice ekosistem inşa eder
  • Actuator ile health, metrics ve env endpoint'ini observability'ye bağlar
  • GraalVM Native Image ile hızlı startup ve düşük memory ayağı kazanır

Spring Boot Eğitimi Konuları

1. Spring Framework ve Spring Boot Farkı

  • Spring Framework: kapsamlı, konfigürasyon ağırlıklı
  • Spring Boot: opinionated, auto-config, hızlı başlangıç
  • Spring sürüm akışı ve LTS
  • Spring Initializr ile proje üretimi

2. Auto-configuration ve Conditional Annotations

  • @SpringBootApplication üçlemesi
  • @EnableAutoConfiguration mekanizması
  • @ConditionalOnClass, @ConditionalOnProperty
  • spring.factories ve AutoConfiguration imports

3. Starter Dependency Sistemi

  • spring-boot-starter-web, -data-jpa, -security
  • Transitive dependency yönetimi
  • BOM (Bill of Materials)
  • Maven vs Gradle build

4. Bean Lifecycle ve Component Scanning

  • @Component, @Service, @Repository, @Controller
  • Component scan strategy
  • Bean scope: singleton, prototype, request, session
  • @PostConstruct, @PreDestroy

5. Dependency Injection ve IoC Container

  • Constructor, setter, field injection
  • @Autowired ve @Qualifier
  • @Primary ve @Lazy
  • Circular dependency çözümü
  • ApplicationContext

6. Configuration - application.yml ve Profile

  • application.properties vs YAML
  • @Value ve @ConfigurationProperties
  • Profile: dev, test, prod
  • spring.profiles.active
  • External configuration ordering

7. Spring MVC - REST Controller

  • @RestController vs @Controller
  • @GetMapping, @PostMapping vb.
  • @PathVariable, @RequestParam, @RequestBody
  • ResponseEntity ile HTTP response
  • HTTP message converter (Jackson)

8. Validation - Bean Validation (Jakarta)

  • @Valid ve @Validated
  • @NotNull, @Size, @Email, @Pattern
  • Custom constraint validator
  • Group validation

9. Exception Handling - @ControllerAdvice

  • @ExceptionHandler local
  • @ControllerAdvice global
  • ResponseStatusException
  • Problem Details (RFC 7807)

10. Spring Data JPA

  • Entity ve @Id, @GeneratedValue
  • JpaRepository, CrudRepository
  • Method-name query: findByEmailAndStatus
  • @Query ve native query
  • Specification ve Query DSL

11. Relationship - OneToMany, ManyToMany

  • @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
  • Cascade ve orphan removal
  • FetchType: EAGER vs LAZY
  • N+1 problem ve @EntityGraph

12. Transaction Management

  • @Transactional davranışı
  • Propagation: REQUIRED, REQUIRES_NEW, NESTED
  • Isolation level
  • Rollback rules
  • Self-invocation tuzağı

13. Spring Security - Authentication

  • SecurityFilterChain modern config
  • UserDetailsService ve PasswordEncoder
  • BCrypt, Argon2
  • Form login ve HTTP Basic
  • CSRF ve CORS yapılandırma

14. JWT ve OAuth2 Resource Server

  • JWT ile stateless authentication
  • OAuth2 Resource Server
  • OAuth2 Client (sign-in with Google)
  • Spring Authorization Server

15. Method Security - @PreAuthorize

  • @PreAuthorize, @PostAuthorize
  • @Secured ve @RolesAllowed
  • SpEL ile karmaşık kural
  • Method-level security best practice

16. Actuator - Health, Metrics, Info

  • /health, /metrics, /info endpoint
  • Custom health indicator
  • Micrometer ile metric export
  • Prometheus, Grafana entegrasyon

17. Caching - Caffeine, Redis

  • @Cacheable, @CacheEvict, @CachePut
  • Caffeine ile in-memory cache
  • Redis ile distributed cache
  • TTL ve cache key strategy

18. Testing - @SpringBootTest, MockMvc

  • @SpringBootTest integration test
  • @WebMvcTest slice test
  • @DataJpaTest ile repository test
  • MockMvc ve WebTestClient
  • Testcontainers ile gerçek DB test

19. Reactive - Spring WebFlux

  • Mono, Flux reactive type
  • Annotation-based vs functional router
  • R2DBC ile reactive database
  • WebClient ile HTTP client
  • Backpressure

20. Deploy - GraalVM Native, Docker, K8s

  • Spring Boot fat jar
  • Buildpacks ile Docker image
  • GraalVM Native Image: hızlı startup
  • Kubernetes ve Spring Cloud Kubernetes
  • Config Server ve Service Discovery

SPRING BOOT EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları


Spring Boot starter dependency mantığı ne sağlar?

spring-boot-starter-web tek bağımlılık ekleyince Spring MVC, Tomcat, Jackson, validation gibi gereken her şey gelir. Sürüm uyumluluğu Spring Boot tarafından test edilmiş — versioning karmaşası yok. Auto-configuration starter'larla birlikte default davranış sağlar; opinionated yaklaşım hızlı başlangıç verir.

Auto-configuration ne zaman istenmez ve nasıl override edilir?

Default davranış proje ihtiyacına uymuyorsa @Conditional annotation'larla kendi config'iniz öncelikli yapılır. spring-boot-starter çıkarılabilir veya @SpringBootApplication(exclude = ...) ile spesifik auto-config kapatılır. application.properties veya YAML ile parametre override en yaygın yol.

Spring Data JPA repository method-naming nasıl çalışır?

findByEmailAndStatus gibi metod isminden Spring Data otomatik JPQL query üretir. find/get/read, By, And/Or, OrderBy gibi keyword'lerle composition. Daha karmaşık için @Query ile JPQL veya native SQL yazılır. Custom logic gerekiyorsa repository fragment ile implementation bağlanır.

Spring Security ile OAuth2 entegrasyonu nasıl?

spring-boot-starter-oauth2-resource-server JWT validation ekler. Authorization server (Keycloak, Auth0) tarafı ayrıdır. application.yml'de issuer-uri verilince JWK fetch ve token verification otomatik. WebSecurityConfigurerAdapter (artık SecurityFilterChain) ile endpoint güvenlik kuralı tanımlanır.

Actuator endpoint'leri production'a nasıl açılır?

Default'ta sadece health ve info açık. management.endpoints.web.exposure.include ile diğerleri (metrics, env, threaddump) eklenir — ama production'da sadece authenticated user'a açılmalı. /actuator/prometheus Prometheus scrape için, /actuator/health/liveness K8s probe için kritik.

GraalVM Native Image ile JVM build arasındaki trade-off?

Native Image AOT compile — startup milisaniyeler, RAM tüketimi 10x azalır, serverless ve container için ideal. Tradeoff: build süresi dakikalarca, reflection ve dynamic class loading manuel hint gerektirir. Cold start kritikse Native; klasik long-running servis için JVM hâlâ üstün.