Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

This is a playground for spring boot related projects.

  • 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

0. Prerequisites

  • 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

1. Spring Core and Fundamentals

  • 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

2. Spring Web (REST API Development)

  • 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)

3. Spring Security (Authentication and Authorization)

  • 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)

4. Spring Data and Database Management

  • 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)

Databases

  • PostgreSQL
  • MySQL
  • Microsoft SQL Server
  • MongoDB
  • Redis
  • Elasticsearch / OpenSearch
  • Cassandra (optional)

5. Spring AOP (Aspect-Oriented Programming)

  • 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

6. Spring Boot Testing

  • 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

7. Spring Boot Caching

  • 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)

8. Spring Boot Messaging and Event-Driven Architecture

  • 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

9. Spring Cloud and Microservices

  • 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

10. Spring Boot Scheduling and Background Jobs

  • 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

11. Spring Boot Email and Notifications

  • 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

12. Spring Boot Observability and Monitoring

  • 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)

13. Spring Boot Configuration and Secrets Management

  • 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

14. Spring Boot API Documentation

  • 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

15. Spring Boot File and Storage Management

  • 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

16. Spring Boot Integration

  • 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

17. Spring Boot Reactive Programming

  • 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

18. Spring Boot Deployment and DevOps

  • 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)

19. Spring Boot Performance Optimization

  • 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

20. Spring Boot Architecture and Design Patterns

  • 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

21. Spring Boot Advanced and Specialized Modules

  • 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)

Suggested Learning Order

  • 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors