A walkthrough of all Spring Framework projects and concepts essential for developing the backend of enterprise web applications.
- Tight and Loose Coupling
- XML Configuration for IoC and DI
- Java Configuration for IoC and DI
- Annotations and Hybrid Configurations for IoC and DI
- Bean Scopes and Scope Combinations
- Lazy Initialization
- Properties
- XML Value Injection (Primitives and Non-primitives)
- Spring Profiles
- Spring JDBC Introduction
- Configuring XML for Database Connection
- Configuring Java Config File for Database Connection (Alternative to XML Config)
- Insert, Update, and Delete Operations with
JdbcTemplate
- Configuring
RowMapper
Implementation Class for Select Operations - Single-Object Select Queries and Multi-Object Select Queries with
JdbcTemplate
andRowMapper
- Understanding Spring Boot Project Structure
- Customizing the Application Banner
- Testing Spring Core Features in a Spring Boot Application
- Reading System and Custom Properties with the
Environment
Interface
- Working with the Controller Layer and HTTP Requests/Responses
- Using Path Parameters and Query Parameters in Routing
- Defining Application Properties with a YAML Data Serialization File
- Configuring PostgreSQL for Database Operations
- Creating Entity Classes and Mapping Fields with Database Schemas
- Using
JpaRepository
for Persistence Layer Methods - Performing CRUD Operations with JPA
- Defining Custom Search Functions in the Repository with JPA Query Methods
- Defining Entity Relationships with Hibernate Mappings
- Assigning Secondary/Child Entities to Primary/Parent Entities via API Requests
- Resolving Parent-Child Serialization Issues on Child's GET Requests
- Customizing REST API Requests and Responses with the DTO Pattern
- Using Java Records (JDK 14+) for DTO Files Creation
- Refactoring Code to Move Business Logic to the Service Layer
- Performing Basic Data Validation for API Request Objects
- Handling Bad Request Exceptions After Validation
- Introduction to Spring Testing with JUnit 5
- Unit Testing Basic Methods of Mapper Classes
- Achieving Test Isolation with Mockito by Mocking External Beans
- Testing Service Layer Methods with Mockito
- Using Lombok Annotations to Reduce Boilerplate Code
- Understanding Primary Key ID Generation Strategies
- Exploring the Hibernate Entity Lifecycle
- Testing Repository Methods with the
CommandLineRunner
Bean - Unidirectional vs. Bidirectional Entity Mappings
- Advanced Hibernate Entity-Relationship Mappings
- Using
@MappedSuperclass
for Common Entities - Exploring JPA-Hibernate Entity Inheritance Strategies
- Creating Composite Primary Keys with
@Embeddable
and@EmbeddedId
- Resolving Multiple Inheritance Issues with Embedded Entities
- Defining Custom Queries with the
@Query
Annotation - Creating Optimized Queries with Named Queries
- Implementing Specifications for Dynamic and Type-Safe Queries
- Setting up a Spring Boot Project with Dependencies for Spring Security
- Understanding the Basic Auth Header and Its Encoding
- Creating an In-Memory User for Authentication
- Enabling User Authentication via Database User Entries
- Configuring
UserDetails
,UserDetailsService
, andWebConfig
Classes for Authentication - Managing User Authorities with the
GrantedAuthority
Interface
- Defining
SecurityFilterChain
bean in configuration class - Creating Custom Authentication Filter class as a part of Filter Chain
- Writing implementations of
AuthenticationManager
andAuthenticationProvider
for our custom filter - Understanding the workflow of Authentication process inside Authentication Filter
- Testing and Debugging the Key-based Custom Authentication application
- Overview of Chaining Default Filters with Custom Filters
- Chaining multiple filters and availing multiple authentication methods for an user
addFilterBefore()
vsaddFilterAfter()
vsaddFilterAt()
- Understanding endpoint authorization associated methods
- Testing the chain of different combinations of matcher methods with authorization rules
- Use of different authorization rules
- Introduction to
requestMatchers()
matcher method (Spring Security 5.8+)
- Protecting various endpoints using
requestMatchers()
- Securing endpoints under the same route prefix group
- Configuring matchers for the same endpoint with different HTTP methods
- Securing methods in controller, service, and repository classes using Method-level authorization
- Overview of
@EnableMethodSecurity
in theWebSecurityConfig
class - Utilizing
@PreAuthorize
and@PostAuthorize
to specify authorization rules for methods - Using
@PreFilter
and@PostFilter
to filter incoming and outgoing collection object requests