Spring & Spring Boot Roadmap - Basics -> Advanced
1. Technical Prerequisites
1.1 Required Java
- Java Core
- OOP
- Generics
- Collections
- Stream API
- Optional
- Exception handling
- Basic concurrency
- Virtual threads
- Reflection
- Annotations
- Records
- Sealed classes
- Pattern matching
- Maven
- Gradle
- JUnit
1.2 Web and HTTP
- HTTP request
- HTTP response
- HTTP method
- HTTP status code
- Header
- Query parameter
- Path variable
- Body
- JSON
- XML
- REST
- Idempotency
- Caching HTTP
- Content negotiation
- CORS
- Cookie
- Session
- TLS
- Proxy
- Reverse proxy
1.3 Database
- SQL
- JDBC
- Transaction
- Isolation level
- Index
- Join
- Constraint
- Migration
- Connection pool
- ORM
- JPA
- Hibernate
- R2DBC
- NoSQL
- Redis
- MongoDB
1.4 Application Architecture
- Layered architecture
- Hexagonal architecture
- Clean architecture
- Basic domain-driven design
- Dependency inversion
- DTO
- Mapper
- Repository
- Service
- Controller
- Use case
- Boundary
- Adapter
- Configuration
- Cross-cutting concern
2. Spring Ecosystem
2.1 Spring Framework
- Core Container
- Beans
- Context
- Expression Language
- AOP
- Data Access
- Transaction Management
- Spring MVC
- Spring WebFlux
- Validation
- Integration
- Testing
- Observability
- AOT
- Native support
2.2 Spring Boot
- Auto-configuration
- Starter dependencies
- Embedded server
- Externalized configuration
- Profiles
- Actuator
- DevTools
- Production-ready features
- Dependency management
- Build plugins
- Docker Compose integration
- Service connections
- Native image
- AOT processing
- Modularized starters
- Spring Boot 4.x structure
2.3 Spring Data
- Spring Data Commons
- Spring Data JPA
- Spring Data JDBC
- Spring Data R2DBC
- Spring Data MongoDB
- Spring Data Redis
- Spring Data Elasticsearch
- Repository abstraction
- Query derivation
- Pagination
- Sorting
- Auditing
- Projections
- Specifications
2.4 Spring Security
- Authentication
- Authorization
- Security filter chain
- Password encoding
- Session security
- CSRF
- CORS
- OAuth2 Login
- OAuth2 Client
- OAuth2 Resource Server
- JWT
- OIDC
- Method Security
- Authorization Server
- Security testing
2.5 Spring Cloud
- Config Server
- Service discovery
- Gateway
- LoadBalancer
- OpenFeign
- CircuitBreaker
- Retry
- Stream
- Bus
- Kubernetes support
- Contract testing
- Distributed tracing
- Cloud-native configuration
2.6 Spring Integration
- Message
- Channel
- Endpoint
- Gateway
- Transformer
- Router
- Splitter
- Aggregator
- Service Activator
- Adapter
- Poller
- Error channel
- Integration flow
2.7 Spring Batch
- Job
- Step
- JobRepository
- JobLauncher
- ItemReader
- ItemProcessor
- ItemWriter
- Chunk processing
- Tasklet
- Restartability
- Skip
- Retry
- Partitioning
- Remote chunking
2.8 Spring for GraphQL
- Schema
- Query
- Mutation
- Subscription
- Controller
- DataFetcher
- DataLoader
- Error handling
- Security
- Testing
- Pagination
- Federation basics
2.9 Spring Modulith
- Application modules
- Module boundaries
- Published events
- Event publication registry
- Architecture verification
- Documentation generation
- Integration testing
- Modular monolith
- Modulith vs microservices
2.10 Spring AI
- Chat client
- Prompt template
- Embedding
- Vector store
- RAG
- Tool calling
- Advisors
- Chat memory
- Structured output
- Model abstraction
- Observability AI
- Testing AI integrations
3. Spring Framework Core
3.1 Inversion of Control
- IoC
- Dependency Injection
- Dependency Lookup
- Container
- BeanFactory
- ApplicationContext
- Bean definition
- Bean metadata
- Object graph
- Dependency graph
- Constructor injection
- Setter injection
- Field injection
- Method injection
3.2 ApplicationContext
AnnotationConfigApplicationContextClassPathXmlApplicationContextFileSystemXmlApplicationContextWebApplicationContext- Parent context
- Child context
- Context hierarchy
- Context refresh
- Context close
- Environment access
- Resource loading
- Event publishing
- Internationalization
3.3 Bean definition
- Bean name
- Bean alias
- Bean class
- Bean scope
- Constructor arguments
- Property values
- Lazy initialization
- Primary bean
- Fallback bean
- Depends-on
- Init method
- Destroy method
- Factory method
- FactoryBean
3.4 Bean scope
- Singleton
- Prototype
- Request
- Session
- Application
- WebSocket
- Custom scope
- Scoped proxy
- Singleton state management
- Prototype injection
- Thread safety per scope
3.5 Dependency injection
- Constructor injection
- Setter injection
- Field injection
- Required dependency
- Optional dependency
- Circular dependency
@Autowired@Qualifier@Primary@Fallback@LazyObjectProviderProvider- Collection injection
- Map injection
- Generic type injection
3.6 Component scanning
@Component@Service@Repository@Controller@RestController@Configuration@ComponentScan- Include filter
- Exclude filter
- Base package
- Bean naming strategy
- Stereotype annotation
- Custom composed annotation
3.7 Java configuration
@Configuration@Bean- Full configuration mode
- Lite configuration mode
- Proxy bean methods
proxyBeanMethods- Static bean method
- Conditional bean
- Import configuration
- Configuration composition
- Configuration ordering
3.8 XML configuration
- Bean XML
- XML namespace
- Constructor arg
- Property injection
- Context namespace
- AOP namespace
- TX namespace
- Legacy XML migration
- XML + annotation mixed config
3.9 Bean lifecycle
- Instantiation
- Dependency population
- Aware callbacks
- BeanPostProcessor before init
- InitializingBean
@PostConstruct- Init method
- BeanPostProcessor after init
- DisposableBean
@PreDestroy- Destroy method
- Context shutdown
- SmartLifecycle
- Lifecycle phase
3.10 Container extension points
BeanPostProcessorBeanFactoryPostProcessorBeanDefinitionRegistryPostProcessorImportBeanDefinitionRegistrarImportSelectorDeferredImportSelectorFactoryBeanApplicationContextInitializerApplicationListenerBeanNameAwareBeanFactoryAwareApplicationContextAwareEnvironmentAware
4. Configuration, Environment, and Properties
4.1 Environment abstraction
EnvironmentConfigurableEnvironment- Property source
- System properties
- Environment variables
- Command-line arguments
- Servlet config properties
- Servlet context properties
- Custom property source
- Property source ordering
4.2 Profiles
@Profile- Active profile
- Default profile
- Profile groups
- Profile-specific configuration
- Profile-specific properties
- Multi-environment deployment
- Local profile
- Test profile
- Production profile
4.3 Externalized configuration
application.propertiesapplication.yml- Environment variable binding
- Command-line override
- Config tree
- Config import
- Optional config import
- Profile document
- Property precedence
- Secrets externalization
- Kubernetes ConfigMap
- Kubernetes Secret
4.4 Configuration properties
@ConfigurationProperties- Constructor binding
- JavaBean binding
- Record binding
- Nested properties
- List binding
- Map binding
- Duration binding
- DataSize binding
- Enum binding
- Validation
- Metadata generation
- IDE completion
- Custom converter
4.5 Conditional configuration
@Conditional@ConditionalOnClass@ConditionalOnMissingClass@ConditionalOnBean@ConditionalOnMissingBean@ConditionalOnProperty@ConditionalOnResource@ConditionalOnWebApplication@ConditionalOnNotWebApplication@ConditionalOnExpression- Custom condition
- Condition evaluation report
4.6 Spring Expression Language
- SpEL syntax
- Literal expression
- Property access
- Method invocation
- Collection access
- Safe navigation
- Elvis operator
- Type reference
- Bean reference
- Expression parser
- Evaluation context
- SpEL in
@Value - SpEL security considerations
4.7 @Value
- Property placeholder
- Default value
- SpEL expression
- Type conversion
- List injection
- Map injection
- Limitations
- Alternatives with
@ConfigurationProperties
5. AOP and Cross-Cutting Concerns
5.1 AOP Concepts
- Aspect
- Join point
- Pointcut
- Advice
- Target object
- Proxy
- Weaving
- Cross-cutting concern
- Interceptor
- Invocation chain
5.2 Spring AOP
- Proxy-based AOP
- JDK dynamic proxy
- CGLIB proxy
- Interface proxy
- Class proxy
- Self-invocation problem
- Final class limitation
- Final method limitation
- Proxy exposure
- AOP ordering
5.3 Advice types
@Before@After@AfterReturning@AfterThrowing@Around- ProceedingJoinPoint
- Return value handling
- Exception handling
- Argument inspection
5.4 Pointcut expression
executionwithinthistargetargs@annotation@within@target@args- Named pointcut
- Pointcut composition
5.5 Use cases AOP
- Transaction management
- Security method interceptor
- Logging
- Metrics
- Tracing
- Auditing
- Caching
- Retry
- Rate limiting
- Idempotency
- Feature flag
- Validation
6. Validation, Binding, and Conversion
6.1 Bean Validation
- Jakarta Validation
@Valid@Validated@NotNull@NotBlank@NotEmpty@Size@Min@Max@Positive@Email@Pattern- Custom constraint
- ConstraintValidator
- Validation group
- Cross-field validation
6.2 Spring Validator
ValidatorErrorsBindingResult- Field error
- Object error
- Nested path
- Programmatic validation
- Web validation
- Service validation
6.3 Data binding
DataBinderWebDataBinder- Property editor
- Allowed fields
- Disallowed fields
- Binding errors
- Type mismatch
- Form binding
- Request parameter binding
- Model attribute binding
6.4 Type conversion
ConversionServiceConverterConverterFactoryGenericConverter- Formatter
- Date formatter
- Number formatter
- Enum converter
- Custom converter
- ApplicationConversionService
7. Spring MVC
7.1 Servlet stack
- Servlet API
- Servlet container
- Tomcat
- Jetty
- Undertow
- DispatcherServlet
- HandlerMapping
- HandlerAdapter
- ViewResolver
- HandlerExceptionResolver
- MultipartResolver
- LocaleResolver
- ThemeResolver
7.2 Controller
@Controller@RestController@RequestMapping@GetMapping@PostMapping@PutMapping@PatchMapping@DeleteMapping- Request mapping conditions
- URI pattern
- Path pattern parser
- API versioning mapping
- Controller method signature
7.3 Request input
@PathVariable@RequestParam@RequestHeader@CookieValue@RequestBody@ModelAttribute@RequestPartHttpServletRequestPrincipalUriComponentsBuilder- Optional parameter
- Default value
- Required parameter
7.4 Response output
@ResponseBodyResponseEntityHttpHeaders- Status code
- Location header
@ResponseStatus- Streaming response
- File download
- Content negotiation
- Message converter
- JSON serialization
- XML serialization
7.5 REST API design
- Resource modeling
- URI design
- HTTP method semantics
- Status code semantics
- Pagination
- Sorting
- Filtering
- Partial update
- Idempotency key
- Optimistic locking
- ETag
- Cache-Control
- API versioning
- Error contract
7.6 Error handling
@ExceptionHandler@ControllerAdvice@RestControllerAdviceProblemDetailErrorResponse- Validation error response
- Business error response
- Technical error response
- Global error handling
- Error attributes
- Error path
- Trace ID in error
- Security-safe error response
7.7 Interceptors and Filters
- Servlet Filter
OncePerRequestFilterHandlerInterceptor- Pre-handle
- Post-handle
- After-completion
- Filter ordering
- Interceptor ordering
- Request logging
- Correlation ID
- Authentication pre-processing
- Rate limiting
7.8 Multipart and Files
- Multipart upload
MultipartFile- File size limit
- Content type validation
- Temporary storage
- Streaming upload
- File download
- Range request
- Static resources
- Resource handler
7.9 View rendering
- Thymeleaf
- FreeMarker
- JSP legacy
- Model
- ModelAndView
- Form binding
- Template layout
- Static resources
- WebJars
- Server-side rendering
8. Spring WebFlux and Reactive Programming
8.1 Reactive fundamentals
- Reactive Streams
- Publisher
- Subscriber
- Subscription
- Backpressure
- Non-blocking I/O
- Event loop
- Scheduler
- Operator
- Cold publisher
- Hot publisher
8.2 Project Reactor
MonoFluxmapflatMapconcatMapswitchMapfilterzipmergethendoOnNextdoOnErroronErrorResumeretrytimeoutsubscribeblock- Context
- Testing with StepVerifier
8.3 WebFlux server
- Reactive controller
@RestControllerreactive- Functional endpoints
- RouterFunction
- HandlerFunction
- ServerRequest
- ServerResponse
- Reactive validation
- Reactive error handling
- Streaming response
- Server-Sent Events
- WebSocket reactive
8.4 WebClient
WebClient- Builder
- Base URL
- Header
- Query parameter
- Body inserter
- Retrieve
- Exchange
- Error handling
- Timeout
- Retry
- Filter
- Codec
- Connection pool
- Load-balanced WebClient
- OAuth2 WebClient
8.5 Reactive data access
- R2DBC
- Reactive repository
- Reactive transaction
- Reactive MongoDB
- Reactive Redis
- Backpressure data stream
- Blocking call isolation
- Scheduler boundary
- Transactional operator
8.6 MVC vs WebFlux
- Blocking stack
- Non-blocking stack
- Thread-per-request
- Event loop
- Virtual threads alternative
- I/O-bound workload
- CPU-bound workload
- Debug complexity
- Library compatibility
- Operational complexity
9. Modern REST Clients
9.1 RestTemplate
- Legacy client
- Blocking calls
- Message converters
- Interceptors
- Error handler
- Migration planning
- Evolution limitations
- Replacement with RestClient
- Replacement with HTTP Interface
9.2 RestClient
- Blocking HTTP client
- Fluent API
- Request builder
- Response handling
- Error handling
- Message converters
- Interceptors
- Observability
- Testing
- Migration from RestTemplate
9.3 HTTP Interface
- Declarative HTTP client
- Interface contract
@HttpExchange@GetExchange@PostExchange@PutExchange@PatchExchange@DeleteExchange- Proxy factory
- Request parameters
- Headers
- Body
- Error handling
- API versioning integration
- Testing
9.4 Client resiliency
- Timeout
- Retry
- Backoff
- Circuit breaker
- Rate limiter
- Bulkhead
- Fallback
- Idempotency
- Connection pool
- DNS cache
- Client metrics
- Client tracing
10. Spring Boot Fundamentals
10.1 Bootstrapping
@SpringBootApplicationSpringApplication- Main class
- Auto-configuration
- Component scanning
- Configuration properties scan
- Application arguments
- Banner
- Startup logging
- Application type
- Web application type
10.2 @SpringBootApplication
@Configuration@EnableAutoConfiguration@ComponentScan- Base package scanning
- Exclude auto-configuration
- Exclude name
- Proxy bean methods
- Best package placement
10.3 Auto-configuration
- Auto-configuration class
- Auto-configuration import
- Conditional annotations
- Auto-configuration ordering
- Auto-configuration report
- Custom auto-configuration
- Auto-configuration metadata
- Starter integration
- Back-off behavior
- Override strategy
- Testing auto-configuration
10.4 Starters
- Starter concept
- Dependency aggregation
spring-boot-starterspring-boot-starter-webspring-boot-starter-webfluxspring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-validationspring-boot-starter-actuatorspring-boot-starter-test- Custom starter
- Starter naming convention
- Starter modularization
10.5 Embedded server
- Embedded Tomcat
- Embedded Jetty
- Embedded Undertow
- Netty
- Port configuration
- Context path
- Compression
- Access log
- Thread pool
- Graceful shutdown
- HTTP/2
- TLS
- SSL bundle
10.6 Application lifecycle
- Startup phase
- Application events
- ApplicationRunner
- CommandLineRunner
- SmartLifecycle
- Readiness state
- Liveness state
- Graceful shutdown
- Exit code
- Failure analyzer
- Startup actuator endpoint
- ApplicationStartup
10.7 DevTools
- Automatic restart
- LiveReload
- Property defaults
- Restart classloader
- Exclude resources
- Remote devtools
- Development-only dependency
- Limitations
11. Advanced Spring Boot Configuration
11.1 Dependency management
- Spring Boot parent
- Spring Boot BOM
- Maven dependency management
- Gradle dependency management
- Version override
- Dependency alignment
- Managed dependency
- Third-party dependency
- Plugin management
- Build reproducibility
11.2 Maven plugin
- Repackage
- Executable JAR
- Executable WAR
- Layered JAR
- Build image
- AOT processing
- Native image
- Build info
- Start/stop integration tests
11.3 Gradle plugin
bootJarbootWarbootRun- Dependency management
- Layered JAR
- Build image
- AOT task
- Native image task
- Build info
- Configuration cache
11.4 Logging in Boot
- Default logging
- Logback
- Log4j2
- JUL bridge
- Log levels
- Logging groups
- File logging
- Rolling policy
- Structured logging
- JSON logs
- Profile-specific logging
- Correlation ID
- Trace ID
- Span ID
11.5 JSON handling
- Jackson auto-configuration
- ObjectMapper
- Module registration
- JavaTimeModule
- Record serialization
- Enum serialization
- Property naming strategy
- Include non-null
- Custom serializer
- Custom deserializer
- Mixins
- JSON views
- ProblemDetail serialization
- Jackson 3 migration
11.6 Task execution
- TaskExecutor
- TaskScheduler
- Async executor
- ApplicationTaskExecutor
- Scheduling thread pool
- Virtual thread executor
- Executor customization
- Rejection policy
- Queue capacity
- Thread naming
- Context propagation
12. Data Access and Transactions
12.1 JDBC with Spring
JdbcTemplateNamedParameterJdbcTemplate- DataSource
- RowMapper
- ResultSetExtractor
- PreparedStatementCreator
- Batch update
- Generated keys
- SQL exception translation
- Transaction management
- Connection pool
- HikariCP
- SQL logging
12.2 Spring Data JDBC
- Aggregate mapping
- Repository
- Entity callbacks
- ID generation
- One-to-one
- One-to-many
- Embedded value
- Custom query
- Domain events
- Optimistic locking
- Auditing
- JDBC vs JPA
12.3 JPA and Hibernate
- Entity
- Table mapping
- ID strategy
- Column mapping
- Relationship mapping
- One-to-one
- One-to-many
- Many-to-one
- Many-to-many
- Embedded
- ElementCollection
- Inheritance mapping
- Entity lifecycle
- Persistence context
- Dirty checking
- Flush
- Lazy loading
- Eager loading
- N+1 problem
- Fetch join
- Entity graph
- Batch fetching
- Second-level cache
12.4 Spring Data JPA
- JpaRepository
- CrudRepository
- PagingAndSortingRepository
- Query method
- Derived query
@Query- Native query
- JPQL
- Specification
- Example matcher
- Projection interface
- DTO projection
- Pagination
- Sorting
- Auditing
- Entity callback
- Custom repository implementation
12.5 Transaction management
PlatformTransactionManager@Transactional- Declarative transaction
- Programmatic transaction
- TransactionTemplate
- Propagation REQUIRED
- Propagation REQUIRES_NEW
- Propagation NESTED
- Propagation SUPPORTS
- Isolation READ_COMMITTED
- Isolation REPEATABLE_READ
- Isolation SERIALIZABLE
- Read-only transaction
- Timeout
- Rollback rules
- Checked exception rollback
- Self-invocation problem
- Transaction boundary
- Open Session in View
- Transactional event listener
12.6 Database migration
- Flyway
- Liquibase
- Versioned migration
- Repeatable migration
- Baseline
- Repair
- Rollback strategy
- Migration naming
- Environment-specific migration
- Test migration
- Zero-downtime migration
- Expand-contract pattern
12.7 R2DBC
- R2DBC driver
- ConnectionFactory
- DatabaseClient
- R2dbcEntityTemplate
- ReactiveCrudRepository
- Reactive transaction
- Connection pool
- Backpressure
- Blocking boundary
- Testing R2DBC
12.8 NoSQL
- MongoTemplate
- MongoRepository
- RedisTemplate
- RedisRepository
- ElasticsearchRepository
- CassandraRepository
- Document mapping
- Key-value mapping
- Indexing
- TTL
- Cache integration
- Reactive NoSQL access
13. Caching
13.1 Cache abstraction
@EnableCaching@Cacheable@CachePut@CacheEvict- Cache name
- Cache key
- Key generator
- Condition
- Unless
- CacheManager
- CacheResolver
- Self-invocation problem
- Transaction-aware cache
13.2 Cache provider
- ConcurrentMapCache
- Caffeine
- Redis Cache
- Ehcache
- JCache
- Hazelcast
- In-memory cache
- Distributed cache
- TTL
- Max size
- Eviction policy
- Cache metrics
13.3 Cache design
- Cache-aside
- Read-through
- Write-through
- Write-behind
- Stale data
- Stampede protection
- Cache invalidation
- Multi-level cache
- Serialization format
- Key design
14. Scheduling and Async
14.1 Scheduling
@EnableScheduling@Scheduled- Fixed rate
- Fixed delay
- Initial delay
- Cron expression
- Time zone
- Scheduler thread pool
- Error handling
- Distributed scheduling
- ShedLock
- Quartz integration
14.2 Async
@EnableAsync@Async- Async executor
- Return
void - Return
Future - Return
CompletableFuture - Exception handling
- Self-invocation problem
- Context propagation
- Security context propagation
- MDC propagation
- Virtual threads
14.3 Background jobs
- Fire-and-forget
- Retryable job
- Idempotent job
- Job locking
- Job status
- Job cancellation
- Job observability
- Queue-based job
- Batch job
15. Messaging and Event-Driven Architecture
15.1 Spring events
- ApplicationEvent
- ApplicationEventPublisher
@EventListener- TransactionalEventListener
- Synchronous listener
- Asynchronous listener
- Event ordering
- Domain event
- Integration event
- Event payload
- Event error handling
15.2 JMS
- JMS template
- Queue
- Topic
- Listener
- Message converter
- Transaction
- Acknowledgement
- Durable subscription
- Error handler
- Dead letter queue
15.3 RabbitMQ / AMQP
- Exchange
- Queue
- Binding
- Routing key
- Direct exchange
- Topic exchange
- Fanout exchange
- RabbitTemplate
- Listener container
- Acknowledgement
- Retry
- Dead letter exchange
- Publisher confirm
- Message converter
- Delayed message
15.4 Kafka
- Topic
- Partition
- Offset
- Consumer group
- Producer
- Consumer
- KafkaTemplate
@KafkaListener- Serialization
- Deserialization
- Error handler
- Retry topic
- Dead letter topic
- Idempotent producer
- Transactional producer
- Exactly-once semantics
- At-least-once semantics
- Ordering
- Rebalancing
15.5 Spring Cloud Stream
- Binder
- Binding
- Supplier
- Function
- Consumer
- Functional model
- Kafka binder
- Rabbit binder
- Partitioning
- Error channel
- DLQ
- Content type negotiation
- Schema registry
- StreamBridge
15.6 Event-driven architecture
- Event
- Command
- Message envelope
- Correlation ID
- Causation ID
- Idempotent consumer
- Outbox pattern
- Inbox pattern
- Saga
- Choreography
- Orchestration
- Eventual consistency
- Poison message
16. Spring Security
16.1 Fundamentals
- Authentication
- Authorization
- Principal
- Credential
- GrantedAuthority
- Role
- Permission
- SecurityContext
- SecurityContextHolder
- AuthenticationManager
- AuthenticationProvider
- UserDetails
- UserDetailsService
- PasswordEncoder
16.2 Filter chain
- SecurityFilterChain
- DelegatingFilterProxy
- FilterChainProxy
- Filter ordering
- OncePerRequestFilter
- Authentication filter
- Authorization filter
- ExceptionTranslationFilter
- AnonymousAuthenticationFilter
- LogoutFilter
- CSRF filter
- CORS filter
16.3 Modern Configuration
- Bean SecurityFilterChain
- Lambda DSL
- Request matcher
- Authorization rules
- Form login
- HTTP Basic
- Logout
- Remember-me
- Session management
- Stateless API
- Password storage
- Security headers
- Custom filter
16.4 CSRF, CORS, and Sessions
- CSRF token
- CSRF repository
- Cookie CSRF token
- Stateless CSRF strategy
- CORS configuration
- Preflight request
- Session fixation
- Concurrent sessions
- Session creation policy
- SameSite cookie
- Secure cookie
- HttpOnly cookie
16.5 Method security
@EnableMethodSecurity@PreAuthorize@PostAuthorize@PreFilter@PostFilter- AuthorizationManager
- PermissionEvaluator
- Role hierarchy
- SpEL security
- Domain object security
16.6 OAuth2 Client
- Client registration
- Authorized client
- Authorization code flow
- Client credentials flow
- Refresh token
- OAuth2AuthorizedClientManager
- OAuth2 WebClient
- Token relay
- Multi-provider login
- OIDC login
- UserInfo endpoint
16.7 Resource Server
- Bearer token
- JWT
- Opaque token
- JWK Set URI
- Issuer URI
- JwtDecoder
- JwtAuthenticationConverter
- Scope mapping
- Authority mapping
- Multi-tenant issuer
- Token validation
- Custom claim mapping
16.8 Authorization Server
- Registered client
- Authorization endpoint
- Token endpoint
- JWK endpoint
- OIDC provider metadata
- Authorization code grant
- Client credentials grant
- Refresh token grant
- Device code grant
- PKCE
- Consent page
- Token customization
16.9 Security testing
spring-security-test@WithMockUser@WithUserDetails- MockMvc security
- WebTestClient security
- CSRF test
- JWT test
- OAuth2 client test
- Method security test
- Authorization failure test
17. Testing Spring and Spring Boot
17.1 Unit testing
- JUnit 5
- Mockito
- AssertJ
- Unit test service
- Unit test mapper
- Unit test validator
- Mock dependency
- Fake repository
- Test fixture
- Test data builder
17.2 Spring TestContext
- TestContext Framework
- Context caching
- Context hierarchy
@ContextConfiguration@ActiveProfiles@TestPropertySource@DynamicPropertySource@DirtiesContext- Test execution listener
- Dependency injection in test
17.3 Spring Boot testing
@SpringBootTest- Web environment MOCK
- Web environment RANDOM_PORT
- Web environment DEFINED_PORT
@MockBean@SpyBean@TestConfiguration- Test properties
- Application context test
- Full integration test
- Startup failure test
17.4 Test slice
@WebMvcTest@WebFluxTest@DataJpaTest@JdbcTest@DataJdbcTest@DataMongoTest@DataRedisTest@JsonTest@RestClientTest- Custom test slice
- Auto-configuration in slice
- Import extra beans
17.5 Web testing
- MockMvc
- WebTestClient
- TestRestTemplate
- RestClient test
- HTTP Interface test
- JSON path assertions
- Header assertions
- Status assertions
- Error response assertions
- Security assertions
- Multipart test
17.6 Database testing
- In-memory database
- Testcontainers
- PostgreSQL container
- MySQL container
- MongoDB container
- Redis container
- Flyway test
- Liquibase test
- Transaction rollback
- SQL scripts
- Data cleanup
- Repository test
17.7 Messaging testing
- Embedded Kafka
- Kafka Testcontainers
- RabbitMQ Testcontainers
- JMS test
- Spring Cloud Stream test binder
- Message assertion
- DLQ test
- Retry test
- Idempotency test
- Consumer contract test
17.8 Contract testing
- Spring Cloud Contract
- Producer contract
- Consumer contract
- Stub generation
- Stub runner
- HTTP contract
- Messaging contract
- Contract versioning
- Backward compatibility
- API breaking changes
17.9 Performance testing
- Load test
- Startup time test
- Memory footprint test
- JVM profiling
- JFR recording
- SQL query count test
- N+1 detection
- Web latency benchmark
- Virtual threads benchmark
- Native image benchmark
18. Actuator and Production-Ready Features
18.1 Actuator Basics
- Enable actuator
- Endpoint exposure
- HTTP endpoint
- JMX endpoint
- Endpoint security
- Management port
- Management base path
- Endpoint include
- Endpoint exclude
- Custom endpoint
18.2 Main Endpoints
/actuator/health/actuator/info/actuator/metrics/actuator/prometheus/actuator/loggers/actuator/env/actuator/configprops/actuator/beans/actuator/conditions/actuator/mappings/actuator/threaddump/actuator/heapdump/actuator/scheduledtasks/actuator/startup
18.3 Health
- HealthIndicator
- ReactiveHealthIndicator
- Composite health
- Health group
- Liveness probe
- Readiness probe
- Database health
- Redis health
- Rabbit health
- Kafka health
- Custom health
- Health status mapping
- Kubernetes probes
18.4 Info endpoint
- Build info
- Git info
- Custom info contributor
- Application version
- Commit hash
- Build time
- Runtime info
- Environment info
18.5 Metrics
- Micrometer
- MeterRegistry
- Counter
- Gauge
- Timer
- Distribution summary
- Long task timer
- Tags
- Common tags
- JVM metrics
- HTTP server metrics
- HTTP client metrics
- Database metrics
- Cache metrics
- Custom metrics
18.6 Tracing
- Trace ID
- Span ID
- Span
- Parent span
- Baggage
- Context propagation
- Sampling
- OpenTelemetry
- Zipkin
- Tempo
- Jaeger
- Logs correlation
- Metrics correlation
18.7 Audit
- AuditEvent
- AuditEventRepository
- Authentication audit
- Authorization audit
- Custom audit event
- Security event
- Compliance logging
19. Native, AOT, and Startup Optimization
19.1 AOT processing
- AOT engine
- BeanFactory initialization
- Runtime hints generation
- Reflection hints
- Resource hints
- Serialization hints
- Proxy hints
- Initialization hints
- Generated code
- AOT test processing
- AOT limitations
- AOT debugging
19.2 GraalVM Native Image
- Native image
- Closed-world assumption
- Reflection configuration
- Dynamic proxy configuration
- Resource configuration
- JNI configuration
- Build-time initialization
- Run-time initialization
- Native memory
- Startup time
- Memory footprint
- Native image testing
- Native image tracing agent
- Container native image
19.3 Runtime hints
RuntimeHintsRuntimeHintsRegistrar@RegisterReflectionForBinding- Reflection hints
- Resource pattern hints
- Serialization hints
- Proxy hints
- Conditional hints
- Library hints
- Starter hints
19.4 CRaC and Checkpoint Restore
- JVM checkpoint
- JVM restore
- Resource lifecycle
- Connection cleanup
- File descriptor handling
- Network connection handling
- Cache warmup
- Spring lifecycle integration
- Startup optimization
- Compatibility issues
19.5 Startup optimization
- Lazy initialization
- Bean count reduction
- Auto-configuration exclusions
- Classpath reduction
- Conditional beans
- Functional bean registration
- Layered JAR
- CDS/AppCDS
- AOT class loading
- Native image
- Startup actuator endpoint
- ApplicationStartup profiling
20. Docker, Kubernetes, and Deployment
20.1 Container image
- Dockerfile
- Multi-stage build
- JAR image
- Layered JAR
- Buildpacks
- Paketo
bootBuildImage- Distroless image
- Alpine caveats
- JVM flags
- Non-root user
- Image scanning
- SBOM
20.2 JVM in container
- Container memory awareness
- MaxRAMPercentage
- InitialRAMPercentage
- ActiveProcessorCount
- CPU limit
- Memory limit
- Heap sizing
- Native memory
- GC selection
- GC logging
- OOM handling
- Exit on OOM
20.3 Docker Compose
- Compose services
- Spring Boot Docker Compose support
- Service connection
- Database service
- Redis service
- RabbitMQ service
- Kafka service
- Local development
- Testcontainers alternative
- Profile-based compose
20.4 Kubernetes
- Deployment
- Service
- Ingress
- ConfigMap
- Secret
- Readiness probe
- Liveness probe
- Startup probe
- Resource requests
- Resource limits
- Horizontal Pod Autoscaler
- Rolling update
- Graceful shutdown
- PreStop hook
- Service account
- Network policy
20.5 Cloud-native configuration
- Environment variables
- Mounted config
- Config tree
- Secret management
- Vault
- Spring Cloud Config
- Kubernetes ConfigMap reload
- Feature flags
- Externalized endpoints
- Twelve-factor app
21. Spring Cloud and Microservices
21.1 Config Server
- Centralized configuration
- Git backend
- Vault backend
- Native backend
- Encryption
- Refresh scope
- Config client
- Profile-based config
- Label
- Fail-fast
- Retry
- Security
21.2 Service discovery
- Discovery client
- Eureka
- Consul
- Kubernetes discovery
- Service registration
- Health check
- Instance metadata
- Client-side discovery
- Server-side discovery
21.3 Spring Cloud Gateway
- Route
- Predicate
- Filter
- Global filter
- Path rewrite
- Header manipulation
- Rate limiting
- Circuit breaker
- Load balancing
- Security integration
- Observability
- CORS
- Retry
- Timeout
21.4 OpenFeign
- Declarative client
- Contract
- Encoder
- Decoder
- ErrorDecoder
- Interceptor
- Timeout
- Retryer
- Load balancing
- Circuit breaker
- Logging
- Metrics
- Migration to HTTP Interface
21.5 Resilience
- Resilience4j
- Circuit breaker
- Retry
- Rate limiter
- Bulkhead
- Time limiter
- Fallback
- Metrics
- Event publisher
- Failure threshold
- Sliding window
- Half-open state
21.6 Distributed systems patterns
- API Gateway
- Backend for frontend
- Service discovery
- Externalized configuration
- Circuit breaker
- Saga
- Outbox
- CQRS
- Event sourcing
- Idempotency
- Retry storm prevention
- Timeout budget
- Distributed tracing
- Centralized logging
22. API Design and Documentation
22.1 API contract
- OpenAPI
- Swagger UI
- Springdoc
- Request schema
- Response schema
- Error schema
- Security schema
- Example payload
- Operation ID
- Tags
- API grouping
- Versioned documentation
22.2 DTOs and Mapping
- Request DTO
- Response DTO
- Command DTO
- Query DTO
- Projection DTO
- Entity exposure avoidance
- MapStruct
- Manual mapper
- Record DTO
- Validation DTO
- Nullability contract
- Backward compatibility
22.3 API versioning
- URL versioning
- Header versioning
- Media type versioning
- Query parameter versioning
- Version range
- Version deprecation
- Version sunset
- Controller method versioning
- Client versioning
- Documentation versioning
- Compatibility tests
22.4 Error contract
- ProblemDetail
- RFC 9457-style response
- Error code
- Error message
- Error details
- Field validation errors
- Trace ID
- Timestamp
- Path
- Localization
- Security-safe errors
- Machine-readable errors
23. Advanced Spring internals
23.1 Auto-configuration internals
- AutoConfiguration import file
- AutoConfiguration metadata
- Import selector
- Condition evaluation
- Bean back-off
- Ordering
- AutoConfigurationPackages
- Custom starter
- Custom actuator endpoint
- Custom health indicator
- Custom metrics binder
- Custom failure analyzer
23.2 Advanced Bean Registration
- Functional bean registration
- BeanDefinition
- BeanDefinitionRegistry
- GenericBeanDefinition
- RootBeanDefinition
- Programmatic registration
- Conditional registration
- Dynamic registration
- Bean name generation
- Bean definition overriding
23.3 Proxy internals
- AOP proxy creation
- JDK proxy
- CGLIB proxy
- ProxyFactory
- Advisor
- MethodInterceptor
- Invocation chain
- TargetSource
- AutoProxyCreator
- Transaction proxy
- Security proxy
- Cache proxy
- Async proxy
23.4 Annotation model
- Merged annotations
- Composed annotations
- Annotation attributes
- AliasFor
- Meta-annotations
- Repeatable annotations
- Annotation scanning
- Classpath scanning
- ASM metadata reading
- Reflection vs metadata reader
23.5 Spring Factories and Imports
- Legacy
spring.factories - AutoConfiguration imports
- Bootstrap registry
- Environment post-processor
- Application context initializer
- Application listener
- Failure analyzer
- Config data loader
- Config data location resolver
23.6 Runtime performance internals
- Startup bottleneck
- Bean creation cost
- Classpath scanning cost
- Reflection cost
- Proxy cost
- Conditional evaluation cost
- Configuration properties binding cost
- Jackson initialization cost
- Hibernate initialization cost
- AOT optimization
- Lazy initialization trade-off
24. Migrations
24.1 Spring Framework 5 -> 6
- Java 17 baseline
- Jakarta EE namespace
javax.*tojakarta.*- Servlet 6 baseline
- Hibernate 6 compatibility
- Deprecated API removal
- AOT support
- Native hints
- Observability changes
- ProblemDetail adoption
24.2 Spring Boot 2 -> 3
- Java 17 baseline
- Spring Framework 6
- Jakarta migration
- Dependency upgrades
- Security configuration changes
- Actuator changes
- Micrometer tracing migration
- Native image support
- Configuration properties changes
- Removed deprecated APIs
- Test updates
- Third-party compatibility
24.3 Spring Framework 6 -> 7
- Spring Framework 7 baseline
- Jakarta EE 11 alignment
- Null-safety evolution
- API versioning support
- HTTP interface evolution
- Deprecation review
- RestTemplate migration planning
- Testing updates
- Observability updates
- Web stack changes
24.4 Spring Boot 3 -> 4
- Spring Boot 4 modularization
- Spring Framework 7
- Jakarta EE 11 alignment
- JSpecify null-safety
- Java 25 support
- Java 17 compatibility
- Starter/module changes
- Dependency upgrades
- Jackson 3 migration
- API versioning support
- HTTP service clients
- Configuration migration
- Test migration
- Actuator migration
- Security migration
24.5 Legacy migration
- XML to Java config
- Field injection to constructor injection
- RestTemplate to RestClient
- RestTemplate to HTTP Interface
- WebSecurityConfigurerAdapter to SecurityFilterChain
- JUnit 4 to JUnit 5
javaxtojakarta- Old actuator endpoints to new actuator
- Sleuth to Micrometer Tracing
- Spring Cloud legacy to current release train
- Manual Dockerfile to buildpacks
- Blocking design to virtual threads
- Blocking design to reactive stack
25. Spring Framework Evolution by Version
25.1 Spring Framework 1.x
- IoC container
- BeanFactory
- ApplicationContext
- Dependency Injection
- AOP support
- DAO abstraction
- Transaction abstraction
- JDBC support
- ORM integration
- Basic Web MVC
25.2 Spring Framework 2.x
- XML namespaces
- AspectJ integration
- Annotation-based configuration
@Autowired@Component- Component scanning
- Stereotype annotations
- Declarative transactions
- MessageSource improvements
- Web MVC improvements
25.3 Spring Framework 3.x
- Java 5 baseline
@Configuration@Bean- Environment abstraction
- Profiles
- SpEL
- REST support in MVC
RestTemplate- Validation improvements
- ConversionService
- Formatter SPI
- Async support
- Cache abstraction
- JPA 2 support
25.4 Spring Framework 4.x
- Java 8 support
- Lambda-friendly APIs
- Conditional beans
@Conditional- WebSocket support
- STOMP support
- CORS support
- Testing improvements
- Groovy bean definitions
- Annotation composition
- REST controller improvements
- Messaging abstraction improvements
25.5 Spring Framework 5.x
- Java 8 baseline
- Reactive stack
- Spring WebFlux
- WebClient
- Functional endpoints
- Reactive adapters
- Kotlin support
- JUnit 5 support
- Core container refinements
- HTTP/2 readiness
- Functional bean registration
- Nullability annotations
- Observability foundations
25.6 Spring Framework 6.x
- Java 17 baseline
- Jakarta EE 9+ namespace
- AOT processing
- Native image support
- ProblemDetail support
- HTTP Interface clients
- RestClient
- Observability integration
- Virtual thread alignment
- Declarative HTTP services
- Testing improvements
- Security hardening
- Modernized baseline dependencies
25.7 Spring Framework 7.x
- Spring Framework 7 baseline
- Jakarta EE 11 alignment
- JSpecify null-safety adoption
- API versioning support
- HTTP service client improvements
- RestTemplate migration path
- Web MVC enhancements
- WebFlux enhancements
- Core container refinements
- Observability refinements
- AOT refinements
- Testing refinements
- Compatibility with modern Java releases
26. Spring Boot Evolution by Version
26.1 Spring Boot 1.x
- Auto-configuration
- Starter dependencies
- Embedded Tomcat
- Executable JAR
- SpringApplication
- Externalized configuration
- Profiles
- Actuator
- Boot CLI
- DevTools
- Initial production-ready model
26.2 Spring Boot 2.x
- Spring Framework 5 baseline
- Java 8 baseline
- WebFlux support
- Reactive auto-configuration
- Micrometer metrics
- Actuator endpoint model redesign
- Configuration properties binder redesign
- Gradle plugin improvements
- Data integrations update
- Security auto-configuration changes
- Buildpacks support
- Layered JAR support
- Config Data API
- Kubernetes probe support
- Graceful shutdown
26.3 Spring Boot 3.x
- Java 17 baseline
- Spring Framework 6 baseline
- Jakarta EE namespace
- GraalVM native image support
- AOT engine
- ProblemDetail support
- Micrometer Observation
- Micrometer Tracing
- Actuator observability improvements
- Docker Compose support
- Service connections
- SSL bundles
- Virtual threads support
- CRaC support
- Testcontainers integration
- Modernized dependency stack
26.4 Spring Boot 4.0
- Spring Framework 7 baseline
- Modularized Boot codebase
- Smaller focused artifacts
- Jakarta EE 11 alignment
- JSpecify null-safety
- Java 25 support
- Java 17 compatibility
- API versioning support
- HTTP Service Clients support
- Dependency upgrades
- Starter restructuring
- Migration from Boot 3.x
- Observability refinements
- Testing refinements
26.5 Spring Boot 4.1
- Spring Boot 4.1 baseline
- Spring Framework 7.0.8+ baseline
- Java 17 minimum
- Java 26 compatibility
- Dependency upgrades
- Bug fixes from 4.0.x
- Documentation improvements
- Feature improvements from 4.1 milestones
- OpenTelemetry improvements
- Spring gRPC support area
- Log4j file rotation support area
- AMQP improvements area
- Spring Batch integration updates area
27. Progressive Study Path
27.1 Phase 1 - Spring Core Basics
- IoC
- DI
- Bean
- ApplicationContext
- Component scanning
- Java configuration
- Bean scope
- Bean lifecycle
- Profiles
- Properties
- Basic validation
- Basic testing
27.2 Phase 2 - Spring Boot Basics
@SpringBootApplication- Auto-configuration
- Starters
- Embedded server
- Application properties
- YAML
- ConfigurationProperties
- Profiles
- Logging
- DevTools
- Packaging
- Executable JAR
27.3 Phase 3 - Web MVC and REST
- DispatcherServlet
- Controller
- Request mapping
- Request body
- ResponseEntity
- Validation
- Exception handling
- ProblemDetail
- REST design
- OpenAPI
- API versioning
- MockMvc testing
27.4 Phase 4 - Data and Transactions
- JDBC
- DataSource
- HikariCP
- Transaction management
- JPA
- Hibernate
- Spring Data JPA
- Query methods
- Pagination
- Specifications
- Flyway
- Testcontainers
27.5 Phase 5 - Security
- SecurityFilterChain
- Authentication
- Authorization
- PasswordEncoder
- CSRF
- CORS
- Stateless JWT
- OAuth2 Login
- OAuth2 Resource Server
- Method Security
- Security testing
27.6 Phase 6 - Production Readiness
- Actuator
- Health
- Readiness
- Liveness
- Metrics
- Logs
- Tracing
- OpenTelemetry
- Graceful shutdown
- Docker image
- Kubernetes probes
- Resource tuning
27.7 Phase 7 - Async, Caching, and Messaging
@Async@Scheduled- Cache abstraction
- Redis cache
- Spring events
- Kafka
- RabbitMQ
- Spring Cloud Stream
- Outbox pattern
- Idempotent consumer
- Retry
- DLQ
27.8 Phase 8 - Reactive and Modern Concurrency
- Reactor
- Mono
- Flux
- WebFlux
- WebClient
- R2DBC
- Reactive security
- Backpressure
- Virtual threads
- MVC + virtual threads
- Reactive vs blocking decision
27.9 Phase 9 - Spring Cloud
- Config Server
- Gateway
- Service discovery
- OpenFeign
- CircuitBreaker
- Retry
- RateLimiter
- Distributed tracing
- Contract testing
- Kubernetes integration
27.10 Phase 10 - Advanced Topics and Internals
- Auto-configuration custom
- Custom starter
- BeanPostProcessor
- BeanFactoryPostProcessor
- ImportSelector
- FactoryBean
- Proxy internals
- AOP internals
- RuntimeHints
- AOT
- Native image
- Performance profiling
27.11 Phase 11 - Modern Migrations
- Boot 2 to 3
- Boot 3 to 4
- Spring 5 to 6
- Spring 6 to 7
javaxtojakarta- RestTemplate to RestClient
- RestTemplate to HTTP Interface
- Sleuth to Micrometer Tracing
- Legacy security config to SecurityFilterChain
- XML config to Java config
28. Consolidation Projects
28.1 Project 1 - Spring Core Lab
- Manual container
- Bean registration
- Constructor injection
- Qualifier
- Profile
- Bean lifecycle
- BeanPostProcessor
- Event listener
- Unit test
28.2 Project 2 - Spring Boot REST API
- Controller
- DTO
- Validation
- Service layer
- In-memory repository
- Exception handler
- ProblemDetail
- OpenAPI
- Actuator
- MockMvc test
28.3 Project 3 - CRUD with JPA
- PostgreSQL
- Flyway
- Entity
- Repository
- Service transaction
- Pagination
- Sorting
- Specification
- DTO mapper
- Testcontainers
- N+1 query check
28.4 Project 4 - Secure API
- Spring Security
- Stateless authentication
- JWT
- Resource Server
- Role authorization
- Method Security
- CSRF strategy
- CORS config
- Security tests
- OpenAPI security scheme
28.5 Project 5 - Production-Ready Microservice
- Actuator
- Health groups
- Metrics
- Prometheus
- OpenTelemetry
- JSON logging
- Correlation ID
- Docker image
- Kubernetes manifests
- Graceful shutdown
- Resource limits
28.6 Project 6 - Messaging Service
- Kafka producer
- Kafka consumer
- DTO event
- Schema versioning
- Retry topic
- Dead letter topic
- Idempotent consumer
- Outbox pattern
- Metrics
- Testcontainers Kafka
28.7 Project 7 - Reactive API
- WebFlux
- Mono
- Flux
- WebClient
- R2DBC
- Reactive validation
- Reactive error handling
- Backpressure test
- StepVerifier
- WebTestClient
28.8 Project 8 - Custom Spring Boot Starter
- Auto-configuration
- Starter module
- Configuration properties
- Conditional beans
- Runtime hints
- Actuator endpoint
- Health indicator
- Metrics binder
- Auto-configuration tests
- Documentation metadata
28.9 Project 9 - Native Image Lab
- AOT build
- GraalVM native image
- RuntimeHints
- Reflection hints
- Native tests
- Startup benchmark
- Memory benchmark
- Container native image
- Compatibility report
28.10 Project 10 - Modular Monolith
- Spring Modulith
- Module boundaries
- Domain events
- Application events
- Event publication registry
- Module integration test
- Architecture verification
- Documentation generation
- Migration path to microservices
29. Competency Checklist
29.1 Junior Spring Level
- Create a Spring Boot project
- Use main starters
- Write REST controllers
- Validate requests
- Handle errors
- Use properties
- Use profiles
- Write services
- Write basic repositories
- Write basic tests
29.2 Mid-Level Spring
- Understand auto-configuration
- Configure JWT security
- Use Spring Data JPA well
- Manage transactions
- Avoid N+1 queries
- Use Flyway/Liquibase
- Use Actuator
- Export metrics
- Write integration tests
- Use Testcontainers
- Manage basic Docker/Kubernetes
29.3 Senior Spring Level
- Design modular architecture
- Create custom starters
- Diagnose slow startup
- Diagnose proxy/AOP issues
- Diagnose transactional issues
- Diagnose security filter chain issues
- Design versioned APIs
- Design complete observability
- Manage Boot 2 -> 3 -> 4 migration
- Optimize JVM/container performance
- Decide between MVC virtual threads and WebFlux
29.4 Advanced/Platform Level
- Write library auto-configuration
- Write RuntimeHints
- Support GraalVM native image
- Extend Actuator
- Extend Micrometer
- Extend Spring Security
- Use BeanPostProcessor correctly
- Use ImportSelector correctly
- Use FactoryBean correctly
- Analyze Spring internals
- Contribute to Spring-based libraries