- Spring concepts are arranged on a folder level context.
Topics will contain articles that either cover the entire concept or merge a few related together. To Explore this project ensure you have the Prerequisites, if not here is an article for the same. Using the latest version of java though
java --version # openjdk 25.0.4.1 2026-08-18
- Project Arrangment
- Core Java (8/11/17/21): OOP, collections, generics, streams, lambdas, Optional
- Modern Java: records, sealed classes, pattern matching
- Concurrency basics: threads, ExecutorService, CompletableFuture
- Virtual threads (Java 21+)
- Build tools: Maven or Gradle
- Git and basic Linux/CLI
- HTTP, REST, JSON
- Basic SQL
- Spring Framework fundamentals
- Inversion of Control (IoC)
- Dependency Injection (DI)
- Constructor vs setter vs field injection
- Spring Beans
- Bean scopes (Singleton, Prototype, Request, Session)
- Bean lifecycle
- ApplicationContext and BeanFactory
- Component scanning
- Stereotype annotations
- @Component
- @Service
- @Repository
- @Controller
- Java-based configuration (@Configuration, @Bean)
- @Qualifier, @Primary, @Lazy
- Profiles (@Profile)
- Properties and configuration management
- Spring Expression Language (SpEL)
- Conditional bean registration (@ConditionalOnProperty, @ConditionalOnClass)
- Auto-configuration
- Custom auto-configuration and custom starters
- Spring Boot starters
- Spring Initializr and project structure
- @SpringBootApplication
- Spring Boot application lifecycle
- CommandLineRunner and ApplicationRunner
- DevTools and hot reload
- Graceful shutdown
- Spring MVC
- REST API development
- Controllers and request mappings
- @RestController
- @RequestMapping
- @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
- Request parameters and path variables (@RequestParam, @PathVariable)
- @RequestHeader
- Request and response bodies (@RequestBody)
- ResponseEntity
- DTOs (Data Transfer Objects)
- DTO mapping (MapStruct, ModelMapper)
- Request validation
- Bean Validation (@Valid, @NotNull, @NotBlank, @Size)
- Custom validators
- Global exception handling (@ControllerAdvice, @ExceptionHandler)
- Custom exception handling
- ProblemDetail / RFC 7807 error responses
- HTTP status codes
- REST API design principles (Richardson maturity model)
- API versioning
- Pagination and sorting
- Filtering and searching
- File uploads and downloads
- Multipart requests
- Content negotiation
- Jackson serialization (@JsonProperty, @JsonIgnore, custom serializers)
- CORS configuration
- Interceptors and filters
- Servlet filters
- Async request processing
- Server-Sent Events (SSE)
- WebSockets and STOMP
- HATEOAS (optional)
- Thymeleaf / server-side rendering (optional)
- Spring WebFlux (reactive web development)
- Spring Security architecture
- Authentication vs authorization
- Security filter chain
- SecurityFilterChain configuration (lambda DSL)
- UserDetails and UserDetailsService
- Password encoding (BCrypt, Argon2, DelegatingPasswordEncoder)
- Authentication providers
- Form login and HTTP Basic
- Role-based access control (RBAC)
- Authority-based access control
- Method-level security
- @PreAuthorize, @PostAuthorize, @Secured
- JWT authentication
- Refresh token mechanisms
- OAuth 2.0
- OpenID Connect (OIDC)
- OAuth2 Resource Server
- OAuth2 Client
- Social login
- Session-based authentication
- Stateless authentication
- Session management and session fixation
- Remember-me and logout
- CSRF protection
- CORS security
- XSS prevention
- Security headers
- API endpoint protection
- Custom authentication filters
- Custom authorization logic
- Integration with identity providers (Keycloak, Auth0, Okta)
- Multi-factor authentication basics
- Rate limiting and brute-force protection
- OWASP Top 10 awareness
- Testing secured endpoints (@WithMockUser, spring-security-test)
- JDBC fundamentals
- Spring JDBC (JdbcTemplate, JdbcClient)
- Spring Data JPA
- Hibernate ORM
- Entity mapping (@Entity, @Id, @GeneratedValue)
- Entity relationships
- One-to-One
- One-to-Many
- Many-to-One
- Many-to-Many
- Entity lifecycle
- JPA repositories (JpaRepository, CrudRepository, PagingAndSortingRepository)
- Derived query methods
- JPQL
- Native SQL queries (@Query)
- Criteria API
- Specifications
- Projections (interface/DTO)
- Pagination and sorting
- Lazy and eager loading
- N+1 query problem
- Fetch joins and entity graphs
- Transactions
- @Transactional
- Transaction propagation
- Transaction isolation levels
- Rollback rules and common pitfalls (self-invocation, checked exceptions)
- Optimistic locking
- Pessimistic locking
- Database connection pooling (HikariCP)
- Database migrations (Flyway and Liquibase)
- Auditing (@CreatedDate, @LastModifiedBy)
- Soft deletes
- Multi-tenancy
- Multiple datasources
- First-level and second-level caching
- Database indexing and query optimization
- Alternatives: jOOQ, MyBatis
- Spring Data R2DBC (reactive)
- Spring Data REST (optional)
- PostgreSQL
- MySQL
- Microsoft SQL Server
- MongoDB
- Redis
- Elasticsearch / OpenSearch
- Cassandra (optional)
- Aspect-Oriented Programming fundamentals
- Aspects
- Advice
- Pointcuts
- Join points
- @Aspect
- @Before
- @After
- @Around
- Custom annotations
- Logging aspects
- Performance monitoring
- Audit logging
- Exception tracking
- Proxy-based AOP (JDK vs CGLIB)
- Self-invocation limitations
- JUnit 5
- Mockito
- AssertJ and Hamcrest
- Unit testing
- Integration testing
- @SpringBootTest
- @WebMvcTest
- @DataJpaTest
- @JsonTest
- @RestClientTest
- @MockBean and @MockitoBean
- MockMvc
- WebTestClient
- TestRestTemplate
- REST API testing
- Repository testing
- Security testing
- Exception testing
- Testcontainers (Postgres, Kafka, Redis)
- Database integration testing
- Test profiles and test data management
- Test coverage (JaCoCo)
- Contract testing (Spring Cloud Contract, Pact)
- WireMock
- Mutation testing (PIT, optional)
- TDD practices
- Caching fundamentals
- Spring Cache Abstraction
- @EnableCaching
- @Cacheable
- @CachePut
- @CacheEvict
- Cache managers
- Cache invalidation strategies
- Redis caching
- Caffeine caching
- Distributed caching
- Cache expiration (TTL)
- Cache synchronization
- Cache consistency
- HTTP caching (ETag, Cache-Control)
- Spring Events
- Application events
- Event listeners
- @EventListener
- Asynchronous event processing
- Spring Events vs external messaging
- Spring AMQP
- RabbitMQ integration
- Spring for Apache Kafka
- Kafka producers and consumers
- Consumer groups
- JMS / ActiveMQ
- Spring Cloud Stream
- Message serialization and deserialization
- Message acknowledgment
- Retry mechanisms
- Dead Letter Queues (DLQ)
- Message ordering
- Idempotency and exactly-once semantics
- Event-driven architecture
- Eventual consistency
- Transactional Outbox Pattern
- Saga Pattern
- Monolith vs microservices trade-offs
- Microservices architecture
- Spring Cloud fundamentals
- Service discovery (Eureka, Consul, Kubernetes-native)
- API Gateway
- Spring Cloud Gateway
- Centralized configuration
- Spring Cloud Config
- Inter-service communication
- OpenFeign
- RestClient
- WebClient
- Load balancing (Spring Cloud LoadBalancer)
- Circuit breakers
- Resilience4j
- Retry mechanisms
- Rate limiting
- Bulkhead pattern
- Distributed tracing
- Distributed transactions
- Saga Pattern
- Service-to-service authentication (mTLS, token relay)
- API composition
- CQRS
- Event sourcing
- Microservices observability
- Spring Task Scheduling
- @Scheduled
- @EnableScheduling
- Fixed-rate scheduling
- Fixed-delay scheduling
- Cron expressions
- Distributed scheduling (ShedLock, Quartz)
- Asynchronous execution
- @Async
- Thread pools
- Task executors
- Spring Batch
- Batch processing
- Job configuration
- Job parameters
- Job execution
- Step configuration
- Chunk-oriented processing
- Job restartability
- Job monitoring
- Spring Mail
- SMTP configuration
- Sending plain-text emails
- HTML emails
- Email templates
- Thymeleaf integration
- Email attachments
- Asynchronous email delivery
- Email retry mechanisms
- Notification services
- SMS integration
- Push notification integration
- Application logging
- SLF4J
- Logback
- Log levels
- Structured logging
- Correlation IDs / MDC
- Spring Boot Actuator
- Health checks
- Custom health indicators
- Securing Actuator endpoints
- Application metrics
- Micrometer
- Prometheus
- Grafana
- Distributed tracing
- OpenTelemetry
- Zipkin
- Jaeger
- Centralized logging
- ELK Stack / Loki
- Application performance monitoring
- Readiness and liveness probes
- Error tracking
- Audit logging
- Alerting basics
- Spring Boot Admin (optional)
- application.properties
- application.yml
- Externalized configuration
- @Value and environment abstraction
- Environment variables
- Configuration profiles
- Profile-specific configuration (application-dev.yml)
- Configuration properties (@ConfigurationProperties)
- Configuration validation
- Custom configuration
- Secrets management
- Environment-specific credentials
- Spring Cloud Config
- HashiCorp Vault integration
- AWS Secrets Manager
- Kubernetes ConfigMaps
- Kubernetes Secrets
- 12-factor app principles
- OpenAPI specification
- Swagger UI
- Springdoc OpenAPI
- API documentation
- Request and response schemas
- API descriptions
- Authentication documentation
- API versioning
- API contracts
- Error response documentation
- Spring REST Docs
- Multipart file handling
- File uploads
- File downloads
- File validation
- File size restrictions
- Local file storage
- Cloud storage integration
- AWS S3
- Azure Blob Storage
- Google Cloud Storage
- MinIO
- File metadata management
- Streaming large files
- Document processing
- REST API integrations
- Third-party API consumption
- Spring RestClient
- RestTemplate (legacy)
- WebClient
- HTTP Interface clients (@HttpExchange)
- OpenFeign
- External service authentication
- API keys
- OAuth2 client credentials
- Request and response interceptors
- Timeout configuration
- Retry handling
- Error handling
- gRPC basics
- SOAP web services
- Spring Web Services
- SFTP integration
- Legacy system integration
- Payment gateway integration
- Reactive programming fundamentals
- Project Reactor
- Mono
- Flux
- Reactive Streams
- Spring WebFlux (annotated and functional endpoints)
- Reactive controllers
- Reactive repositories
- Reactive MongoDB
- Reactive Redis
- Reactive security
- Backpressure
- Error handling in reactive pipelines
- Reactive testing (StepVerifier)
- Non-blocking I/O
- Differences between Spring MVC and WebFlux
- WebFlux vs virtual threads
- Maven
- Gradle
- Dependency management
- Maven lifecycle
- Build profiles
- JAR packaging (executable and layered JARs)
- WAR packaging
- Docker
- Dockerfiles
- Buildpacks (spring-boot:build-image)
- Docker Compose (including Spring Boot Docker Compose support)
- Containerization
- Kubernetes fundamentals
- Deploying Spring Boot to Kubernetes
- Helm
- CI/CD pipelines
- Jenkins
- GitHub Actions
- GitLab CI/CD
- Cloud deployment
- AWS deployment
- Azure deployment
- GCP deployment
- Linux server administration
- Nginx
- Reverse proxies
- SSL/TLS configuration
- Environment configuration
- Zero-downtime deployments
- GraalVM native images and AOT
- Static analysis (SonarQube, Checkstyle, SpotBugs)
- Dependency vulnerability scanning (OWASP Dependency-Check, Dependabot)
- JVM fundamentals
- JVM memory management
- JVM tuning and container memory settings
- Garbage collection
- Thread management
- Connection pooling
- Database query optimization
- Hibernate performance tuning
- Lazy loading optimization
- Caching strategies
- API response optimization
- Compression for large payloads
- Pagination
- Asynchronous processing
- Profiling
- Load testing (JMeter, Gatling, k6)
- Stress testing
- Memory leak detection
- Database connection monitoring
- Thread pool tuning
- Layered architecture
- Controller-Service-Repository pattern
- Clean Architecture
- Hexagonal Architecture
- Domain-Driven Design (DDD)
- SOLID principles
- Dependency inversion
- Separation of concerns
- DTO pattern
- Repository pattern
- Factory pattern
- Strategy pattern
- Builder pattern
- Adapter pattern
- Observer pattern
- Dependency injection patterns
- Modular monolith architecture
- Microservices architecture
- CQRS
- Event sourcing
- Saga pattern
- Idempotency
- API gateway pattern
- Circuit breaker pattern
- Outbox pattern
- Multi-tenancy strategies
- GraphQL API design
- Spring Batch: enterprise batch processing
- Spring Integration: enterprise system integration
- Spring Authorization Server: building OAuth2 authorization servers
- Spring Session: distributed session management
- Spring LDAP: LDAP authentication and directory integration
- Spring GraphQL: building GraphQL APIs
- Spring for Apache Kafka: Kafka integration
- Spring AMQP: RabbitMQ integration
- Spring Modulith: modular monolithic applications
- Spring REST Docs: API documentation through tests
- Spring Shell: command-line applications
- Spring Web Services: SOAP web services
- Spring AI: LLM integration, vector stores, RAG
- Spring Statemachine: managing complex state transitions
- Spring Data REST: exposing repositories as REST endpoints
- Spring Cloud Stream: event-driven microservices
- Lombok (and its trade-offs)
- Internationalization (i18n)
- Foundation: sections 0 to 1
- Build APIs: sections 2 to 4
- Make it safe and correct: sections 3, 5 and 6
- Make it fast: sections 7, 10 and 19
- Production-ready: sections 12, 13 and 14
- Integrate and scale out: sections 8, 9, 11, 15 and 16
- Ship it: section 18
- Design like a senior: section 20
- Specialize: sections 17 and 21