{"id":18153267,"url":"https://github.com/sanish07/spring-reference-backup","last_synced_at":"2026-04-11T22:02:50.149Z","repository":{"id":257868750,"uuid":"866558679","full_name":"Sanish07/spring-reference-backup","owner":"Sanish07","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-06T14:14:02.000Z","size":140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T00:52:24.005Z","etag":null,"topics":["java","junit5","spring","spring-boot","spring-core","spring-data-jpa","spring-jdbc","spring-security","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sanish07.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-02T13:31:57.000Z","updated_at":"2024-12-06T14:14:06.000Z","dependencies_parsed_at":"2024-10-27T16:00:28.703Z","dependency_job_id":"1c4455e0-311f-4ae9-b7cd-0d6a531f45f4","html_url":"https://github.com/Sanish07/spring-reference-backup","commit_stats":null,"previous_names":["sanish07/spring-reference-backup"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanish07%2Fspring-reference-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanish07%2Fspring-reference-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanish07%2Fspring-reference-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanish07%2Fspring-reference-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sanish07","download_url":"https://codeload.github.com/Sanish07/spring-reference-backup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247574097,"owners_count":20960495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","junit5","spring","spring-boot","spring-core","spring-data-jpa","spring-jdbc","spring-security","unit-testing"],"created_at":"2024-11-02T03:06:11.456Z","updated_at":"2026-04-11T22:02:45.101Z","avatar_url":"https://github.com/Sanish07.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Reference Manual\n\nA walkthrough of all Spring Framework projects and concepts essential for developing the backend of enterprise web applications.\n\n---\n\n## Table of Contents\n\n1. [Spring Core](#1-spring-core)  \n2. [Spring JDBC](#2-spring-jdbc)  \n3. [Spring Boot](#3-spring-boot)  \n4. [Spring Data JPA - Deep Dive](#4-spring-data-jpa---deep-dive)  \n5. [Spring Security](#5-spring-security)  \n\n---\n\n## 1. Spring Core\n\n### 1.1. IoC and DI Basics\n- **Tight and Loose Coupling**\n- **XML Configuration** for IoC and DI\n- **Java Configuration** for IoC and DI\n- **Annotations and Hybrid Configurations** for IoC and DI\n- **Bean Scopes** and Scope Combinations\n- **Lazy Initialization**\n- **Properties**\n- **XML Value Injection** (Primitives and Non-primitives)\n- **Spring Profiles**\n\n---\n\n## 2. Spring JDBC\n\n### 2.1. Introduction\n- **Spring JDBC Introduction**\n- Configuring **XML for Database Connection**\n- Configuring **Java Config File for Database Connection** (Alternative to XML Config)\n- Insert, Update, and Delete Operations with **`JdbcTemplate`**\n- Configuring **`RowMapper` Implementation Class** for Select Operations\n- Single-Object Select Queries and Multi-Object Select Queries with **`JdbcTemplate`** and **`RowMapper`**\n\n---\n\n## 3. Spring Boot\n\n### 3.1. Introduction to Spring Boot\n- Understanding Spring Boot **Project Structure**\n- Customizing the **Application Banner**\n- Testing Spring Core Features in a **Spring Boot Application**\n- Reading **System and Custom Properties** with the `Environment` Interface\n\n### 3.2. Introduction to Spring REST Architecture\n- Working with the **Controller Layer** and HTTP Requests/Responses\n- Using **Path Parameters** and **Query Parameters** in Routing\n\n### 3.3. Spring Data JPA Introduction\n- Defining Application Properties with a **YAML Data Serialization File**\n- Configuring **PostgreSQL** for Database Operations\n- Creating **Entity Classes** and Mapping Fields with Database Schemas\n- Using **`JpaRepository`** for Persistence Layer Methods\n- Performing **CRUD Operations** with JPA\n- Defining Custom Search Functions in the Repository with **JPA Query Methods**\n- Defining **Entity Relationships** with Hibernate Mappings\n- Assigning Secondary/Child Entities to Primary/Parent Entities via **API Requests**\n- Resolving Parent-Child Serialization Issues on **Child's GET Requests**\n\n### 3.4. Spring DTO Pattern, Data Validation, and Unit Testing\n- Customizing REST API Requests and Responses with the **DTO Pattern**\n- Using **Java Records (JDK 14+)** for DTO Files Creation\n- Refactoring Code to Move Business Logic to the **Service Layer**\n- Performing **Basic Data Validation** for API Request Objects\n- Handling **Bad Request Exceptions** After Validation\n- Introduction to Spring Testing with **JUnit 5**\n- Unit Testing Basic Methods of **Mapper Classes**\n- Achieving Test Isolation with **Mockito** by Mocking External Beans\n- Testing **Service Layer Methods** with **Mockito**\n\n---\n\n## 4. Spring Data JPA - Deep Dive\n\n### Advanced JPA Concepts\n- Using **Lombok Annotations** to Reduce Boilerplate Code\n- Understanding **Primary Key ID Generation Strategies**\n- Exploring the **Hibernate Entity Lifecycle**\n- Testing Repository Methods with the **`CommandLineRunner` Bean**\n- Unidirectional vs. Bidirectional Entity Mappings\n- Advanced **Hibernate Entity-Relationship Mappings**\n\n### Inheritance and Embedded Entities\n- Using **`@MappedSuperclass`** for Common Entities\n- Exploring JPA-Hibernate **Entity Inheritance Strategies**\n- Creating Composite Primary Keys with **`@Embeddable`** and **`@EmbeddedId`**\n- Resolving Multiple Inheritance Issues with **Embedded Entities**\n\n### Custom Queries and Specifications\n- Defining Custom Queries with the **`@Query` Annotation**\n- Creating Optimized Queries with **Named Queries**\n- Implementing **Specifications** for Dynamic and Type-Safe Queries\n\n---\n\n## 5. Spring Security\n\n### 5.1. Setting up\n- Setting up a **Spring Boot Project** with Dependencies for Spring Security\n- Understanding the **Basic Auth Header** and Its Encoding\n- Creating an **In-Memory User** for Authentication\n\n### 5.2. Managing Users\n- Enabling User Authentication via **Database User Entries**\n- Configuring **`UserDetails`**, **`UserDetailsService`**, and **`WebConfig` Classes** for Authentication\n- Managing User Authorities with the **`GrantedAuthority` Interface**\n\n### 5.3. Implementing Key-Based Custom Authentication \n- Defining **`SecurityFilterChain`** bean in configuration class\n- Creating Custom Authentication Filter class as a part of Filter Chain\n- Writing implementations of `AuthenticationManager` and `AuthenticationProvider` for our custom filter\n- Understanding the workflow of **Authentication process inside Authentication Filter**\n- Testing and Debugging the Key-based Custom Authentication application  \n\n### 5.4. Multiple Authentication Providers\n- Overview of **Chaining Default Filters with Custom Filters**\n- Chaining multiple filters and **availing multiple authentication methods for an user**\n- **`addFilterBefore()`** vs **`addFilterAfter()`** vs **`addFilterAt()`**\n\n### 5.5. Endpoint Authorization\n- **Understanding endpoint authorization** associated methods\n- Testing the chain of different combinations of matcher methods with authorization rules\n- Use of different **authorization rules**\n- Introduction to **`requestMatchers()`** matcher method (Spring Security 5.8+)\n\n### 5.6. More with Endpoint Authorization (Matcher method)\n- Protecting various endpoints using **`requestMatchers()`**\n- Securing endpoints under the **same route prefix group**\n- Configuring matchers for the same endpoint with **different HTTP methods**\n\n### 5.7. Method Authorization\n- Securing methods in controller, service, and repository classes using **Method-level authorization**\n- Overview of **`@EnableMethodSecurity`** in the **`WebSecurityConfig`** class\n- Utilizing **`@PreAuthorize`** and **`@PostAuthorize`** to specify authorization rules for methods\n- Using **`@PreFilter`** and **`@PostFilter`** to filter incoming and outgoing collection object requests\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanish07%2Fspring-reference-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanish07%2Fspring-reference-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanish07%2Fspring-reference-backup/lists"}