# in28minutes/master-spring-and-spring-boot architecture

> Architecture diagram of the GitHub repository in28minutes/master-spring-and-spring-boot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/in28minutes/master-spring-and-spring-boot
- Repository: https://github.com/in28minutes/master-spring-and-spring-boot

## Overview

1. This repository is a **teaching monorepo**, not a single product. It contains many **independent sample applications** grouped by topic and course stage. Most folders are self-contained Spring Boot or React projects with their own build files, source tree, resources, and tests.

2. The top-level layout is organized by learning area: **Spring Framework**, **Spring Boot**, **JPA/Hibernate**, **Web MVC**, **REST APIs**, **Full Stack React + Spring Boot**, **Testing**, **Security**, **AOP**, **Build tools**, **Docker**, and **AWS**. The `.md`, `.zip`, and `step-by-step` files are instructional artifacts that document incremental code evolution rather than runtime components.

3. The **Spring Framework examples** in `01-spring/learn-spring-framework-01` and `learn-spring-framework-02` focus on the IoC container, bean wiring, and configuration styles. These projects center around simple domain classes like `GamingConsole`, `MarioGame`, `PacmanGame`, `SuperContraGame`, and runners such as `GameRunner` to demonstrate dependency injection, bean scopes, lazy initialization, lifecycle callbacks, XML config, and CDI-style concepts.

4. The **Spring Boot basics** in `02-springboot` show the transition from manual Spring wiring to Boot auto-configuration and profiles. This app includes a small `Course` domain and controllers like `CourseController` and `CurrencyConfigurationController`, with `application.properties` plus profile-specific overrides in `application-dev.properties` and `application-prod.properties`.

5. The **JPA/Hibernate introduction** in `03-jpa-getting-started` evolves persistence from JDBC to JPA and Spring Data JPA. The core domain is `Course`, and the repositories are split by persistence style: `course/jdbc`, `course/jpa`, and `course/springdatajpa`. `schema.sql` seeds the database, and the command-line runner exercises the repository layer at startup.

6. The **Spring MVC web application** in `11-web-application` is a server-rendered app using JSP views. Requests flow from controllers like `SayHelloController`, `WelcomeController`, `TodoController`, and `TodoControllerJpa` to service/repository layers (`TodoService`, `TodoRepository`), then back to JSPs under `WEB-INF/jsp`. It also includes Spring Security configuration and static SQL seed data, so the architecture combines MVC, session-backed login flow, and database-backed todos.

7. The **REST API projects** in `12-rest-api`, `91-aws/02-rest-api-mysql`, and `13-full-stack/02-rest-api` expose JSON endpoints rather than HTML views. They include `HelloWorldController`, user and todo resources, exception handling, filtering, versioning, and i18n. The domain layer includes `User`, `Post`, and `Todo`, with DAO-style in-memory services alongside JPA repositories such as `UserRepository`, `PostRepository`, and `TodoRepository`.

8. Security is a major cross-cutting boundary. Across the REST and web apps you see **basic auth**, **JWT**, and **form/login security** configurations (`SpringSecurityConfiguration`, `BasicAuthenticationSecurityConfiguration`, `JwtSecurityConfig`, `OauthSecurityConfiguration`). These configurations sit at the edge of the app and protect controller/resource layers before requests reach business or persistence code.

9. The **full-stack architecture** in `13-full-stack` and `91-aws/04-frontend-react` splits the system into two deployable parts: a **React frontend** and a **Spring Boot backend**. The frontend lives in `todo-app/src/components/...` and uses `ApiClient`, `AuthenticationApiService`, `TodoApiService`, and `AuthContext` to manage API calls and auth state. The backend provides todo, hello-world, and authentication endpoints, with CORS and token handling to support browser-based calls.

10. The React side is structured as a **component-based UI layer** with feature folders for todo, counter, and learning examples. The todo feature contains pages and shared layout components (`HeaderComponent`, `FooterComponent`, `LoginComponent`, `WelcomeComponent`, `TodoComponent`, `ListTodosComponent`, `LogoutComponent`) plus a small API client layer. State is shared through React context for authentication, which is the main boundary between UI and server interaction.

11. Persistence in the later applications is intentionally varied to show architectural tradeoffs: **in-memory DAO services**, **Spring JDBC**, **JPA/Hibernate**, and **Spring Data JPA**. The repository layer is the stable boundary, while the service and controller/resource layers stay mostly the same as persistence changes underneath.

12. The repo also contains **cross-cutting infrastructure demos**: `51-junit` for unit testing, `52-mockito` for mocking/stubbing, `73-spring-aop` for aspects and pointcuts, `81-maven` and `82-gradle` for build tooling, `83-docker` for containerization, and `91-aws` for deployment scenarios. These are separate learning modules, not runtime dependencies of a single application.

13. For architecture diagrams, the most accurate mental model is a **set of parallel example systems** rather than one monolith:  
- Spring core samples: bean container and dependency injection  
- Web MVC app: browser → controller → service → repository → JSP  
- REST apps: client → REST controller/resource → service/repository → JSON  
- Full stack app: React UI → REST API with auth/security → persistence  
- Supporting modules: tests, AOP, build, Docker, AWS

14. The primary external systems that materially affect the architecture are **H2/MySQL databases**, the **browser/React runtime**, **Spring Security auth flows**, and deployment/runtime targets like **Docker** and **AWS**. Everything else in the repo is oriented around demonstrating how code moves across those boundaries.

Main entry points: [`03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/LearnJpaAndHibernateApplication.java`](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/LearnJpaAndHibernateApplication.java) (JPA Intro), [`13-full-stack/02-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java`](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/02-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java) (Backend API), [`11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/MyfirstwebappApplication.java`](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/MyfirstwebappApplication.java) (MVC App), [`12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java`](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java) (REST API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_spring_core["Spring Core"]
  node_spring_basic_app["Spring Intro<br/>spring app"]
  node_spring_game["Game Runner<br/>bean demo<br/>[GameRunner.java]"]
  node_spring_hello_config["Hello Config<br/>config demo"]
  node_spring_advanced_app["Spring Stages<br/>spring app"]
  node_spring_realworld["Real World DI<br/>spring wiring"]
end

subgraph group_boot_data["Boot & Data"]
  node_boot_basics["Boot Basics<br/>spring boot app"]
  node_boot_course["Course API<br/>controller"]
  node_boot_currency["Currency Config<br/>controller/config"]
  node_jpa_intro["JPA Intro<br/>spring boot app"]
  node_jpa_jdbc["JDBC Repo"]
  node_jpa_orm["JPA Repo"]
  node_jpa_sd["Data JPA"]
end

subgraph group_web_apps["Web Apps"]
  node_mvc_app["MVC App<br/>web app"]
  node_mvc_web["Web Controllers<br/>mvc controller"]
  node_mvc_todo["Todo Flow<br/>service/repo<br/>[TodoService.java]"]
  node_rest_api["REST API<br/>rest app"]
  node_rest_user["User API<br/>resource<br/>[UserResource.java]"]
end

subgraph group_full_stack["Full Stack"]
  node_fullstack_backend["Backend API<br/>rest app"]
  node_react_frontend["React UI<br/>frontend app<br/>[App.js]"]
  node_react_api["API Client<br/>client layer<br/>[ApiClient.js]"]
  node_react_auth["Auth State<br/>context<br/>[AuthContext.js]"]
end

subgraph group_security["Security"]
  node_rest_security["REST Security<br/>security config"]
  node_sec_basic["Basic Auth<br/>security config"]
  node_sec_jwt["JWT Auth<br/>security config"]
end

subgraph group_tooling["Tooling & Infra"]
  node_aop_module["AOP Demo<br/>aspect module<br/>[LoggingAspect.java]"]
  node_junit_module["JUnit Demo<br/>testing module<br/>[MyMathTest.java]"]
  node_mockito_module["Mockito Demo<br/>testing module"]
  node_build_tools["Build Tools<br/>maven/gradle demos<br/>[pom.xml]"]
  node_docker_demo["Docker Demo<br/>container demo<br/>[pom.xml]"]
  node_aws_demo["AWS Demo<br/>deployment demo<br/>[pom.xml]"]
end

subgraph group_external["External Systems"]
  node_browser(("Browser<br/>runtime"))
  node_database[("Database<br/>external db")]
  node_docker_runtime(("Docker<br/>runtime target"))
  node_aws_runtime(("AWS<br/>deployment target"))
end

node_spring_basic_app -->|"injects"| node_spring_game
node_spring_basic_app -->|"loads"| node_spring_hello_config
node_spring_advanced_app -->|"runs"| node_spring_realworld
node_boot_basics -->|"serves"| node_boot_course
node_boot_basics -->|"serves"| node_boot_currency
node_jpa_intro -->|"compares"| node_jpa_jdbc
node_jpa_intro -->|"evolves to"| node_jpa_orm
node_jpa_intro -->|"evolves to"| node_jpa_sd
node_jpa_intro -->|"persists to"| node_database
node_mvc_app -->|"routes through"| node_mvc_web
node_mvc_app -->|"delegates to"| node_mvc_todo
node_mvc_app -->|"renders in"| node_browser
node_mvc_todo -->|"reads/writes"| node_database
node_rest_api -->|"exposes"| node_rest_user
node_rest_api -->|"protected by"| node_rest_security
node_rest_api -->|"reads/writes"| node_database
node_fullstack_backend -->|"called by"| node_react_api
node_fullstack_backend -->|"persists to"| node_database
node_react_frontend -->|"uses"| node_react_api
node_react_frontend -->|"shares state"| node_react_auth
node_react_frontend -->|"runs in"| node_browser
node_react_api -->|"calls"| node_fullstack_backend
node_react_auth -->|"authenticates with"| node_fullstack_backend
node_sec_basic -->|"secures"| node_browser
node_sec_jwt -->|"secures"| node_browser
node_aop_module -.->|"cross-cuts"| node_database
node_junit_module -.->|"supports"| node_build_tools
node_mockito_module -.->|"supports"| node_build_tools
node_docker_demo -->|"packages for"| node_docker_runtime
node_aws_demo -->|"deploys to"| node_aws_runtime
node_aws_demo -->|"uses"| node_database

click node_spring_basic_app "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/App03GamingSpringBeans.java"
click node_spring_game "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/game/GameRunner.java"
click node_spring_hello_config "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/helloworld/HelloWorldConfiguration.java"
click node_spring_advanced_app "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-02/src/main/java/com/in28minutes/learnspringframework/game/GamingAppLauncherApplication.java"
click node_spring_realworld "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-02/src/main/java/com/in28minutes/learnspringframework/examples/c1/RealWorldSpringContextLauncherApplication.java"
click node_boot_basics "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/LearnSpringBootApplication.java"
click node_boot_course "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/CourseController.java"
click node_boot_currency "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/CurrencyConfigurationController.java"
click node_jpa_intro "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/LearnJpaAndHibernateApplication.java"
click node_jpa_jdbc "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/jdbc/CourseJdbcRepository.java"
click node_jpa_orm "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/jpa/CourseJpaRepository.java"
click node_jpa_sd "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/springdatajpa/CourseSpringDataJpaRepository.java"
click node_mvc_app "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/MyfirstwebappApplication.java"
click node_mvc_web "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/hello/SayHelloController.java"
click node_mvc_todo "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/todo/TodoService.java"
click node_rest_api "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java"
click node_rest_user "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/user/UserResource.java"
click node_rest_security "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/security/SpringSecurityConfiguration.java"
click node_fullstack_backend "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/02-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java"
click node_react_frontend "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/01-frontend/todo-app/src/App.js"
click node_react_api "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/01-frontend/todo-app/src/components/todo/api/ApiClient.js"
click node_react_auth "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/01-frontend/todo-app/src/components/todo/security/AuthContext.js"
click node_sec_basic "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/71-spring-security/src/main/java/com/in28minutes/learnspringsecurity/basic/BasicAuthSecurityConfiguration.java"
click node_sec_jwt "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/71-spring-security/src/main/java/com/in28minutes/learnspringsecurity/jwt/JwtSecurityConfiguration.java"
click node_aop_module "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/73-spring-aop/src/main/java/com/in28minutes/learnspringaop/aopexample/aspects/LoggingAspect.java"
click node_junit_module "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/51-junit/test/com/in28minutes/junit/MyMathTest.java"
click node_mockito_module "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/52-mockito/src/test/java/com/in28minutes/mockito/mockitodemo/business/SomeBusinessImplMockTest.java"
click node_build_tools "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/81-maven/pom.xml"
click node_docker_demo "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/83-docker/hello-world-java/pom.xml"
click node_aws_demo "https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/91-aws/02-rest-api-mysql/pom.xml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_spring_basic_app,node_spring_game,node_spring_hello_config,node_spring_advanced_app,node_spring_realworld,node_browser,node_database,node_docker_runtime,node_aws_runtime toneBlue
class node_boot_basics,node_boot_course,node_boot_currency,node_jpa_intro,node_jpa_jdbc,node_jpa_orm,node_jpa_sd toneAmber
class node_mvc_app,node_mvc_web,node_mvc_todo,node_rest_api,node_rest_user toneMint
class node_fullstack_backend,node_react_frontend,node_react_api,node_react_auth toneRose
class node_rest_security,node_sec_basic,node_sec_jwt toneIndigo
class node_aop_module,node_junit_module,node_mockito_module,node_build_tools,node_docker_demo,node_aws_demo toneTeal
```

## Components

### Spring Core

Container, bean wiring, and DI examples.

- [Spring Intro](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/App03GamingSpringBeans.java): spring app · Basic Spring container and bean wiring starter. · `01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/App03GamingSpringBeans.java`
- [Game Runner](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/game/GameRunner.java): bean demo · Runner and game implementations used for DI examples. · `01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/game/GameRunner.java`
- [Hello Config](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/helloworld/HelloWorldConfiguration.java): config demo · Simple configuration and hello-world bean setup. · `01-spring/learn-spring-framework-01/src/main/java/com/in28minutes/learnspringframework/helloworld/HelloWorldConfiguration.java`
- [Spring Stages](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-02/src/main/java/com/in28minutes/learnspringframework/game/GamingAppLauncherApplication.java): spring app · Expanded Spring examples covering scopes, lifecycle, XML, and CDI. · `01-spring/learn-spring-framework-02/src/main/java/com/in28minutes/learnspringframework/game/GamingAppLauncherApplication.java`
- [Real World DI](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/01-spring/learn-spring-framework-02/src/main/java/com/in28minutes/learnspringframework/examples/c1/RealWorldSpringContextLauncherApplication.java): spring wiring · Data-service and business-service example with alternative implementations. · `01-spring/learn-spring-framework-02/src/main/java/com/in28minutes/learnspringframework/examples/c1/RealWorldSpringContextLauncherApplication.java`

### Boot & Data

Boot basics, profiles, and persistence transitions.

- [Boot Basics](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/LearnSpringBootApplication.java): spring boot app · Auto-configuration, profiles, and simple controllers. · `02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/LearnSpringBootApplication.java`
- [Course API](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/CourseController.java): controller · Small course domain exposed through REST-style endpoints. · `02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/CourseController.java`
- [Currency Config](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/CurrencyConfigurationController.java): controller/config · Configuration-driven controller showing property binding patterns. · `02-springboot/src/main/java/com/in28minutes/springboot/learnspringboot/CurrencyConfigurationController.java`
- [JPA Intro](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/LearnJpaAndHibernateApplication.java): spring boot app · Persistence learning path from JDBC to JPA and Spring Data JPA. · `03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/LearnJpaAndHibernateApplication.java`
- [JDBC Repo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/jdbc/CourseJdbcRepository.java): repository · Manual JDBC-based persistence layer. · `03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/jdbc/CourseJdbcRepository.java`
- [JPA Repo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/jpa/CourseJpaRepository.java): repository · Entity-manager based JPA repository. · `03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/jpa/CourseJpaRepository.java`
- [Data JPA](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/springdatajpa/CourseSpringDataJpaRepository.java): repository · Spring Data JPA repository abstraction. · `03-jpa-getting-started/src/main/java/com/in28minutes/springboot/learnjpaandhibernate/course/springdatajpa/CourseSpringDataJpaRepository.java`

### Web Apps

Server-rendered MVC and REST server-side examples.

- [MVC App](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/MyfirstwebappApplication.java): web app · Server-rendered Spring MVC application. · `11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/MyfirstwebappApplication.java`
- [Web Controllers](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/hello/SayHelloController.java): mvc controller · Hello and login controllers for page navigation. · `11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/hello/SayHelloController.java`
- [Todo Flow](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/todo/TodoService.java): service/repo · Todo service and repository backing JSP views. · `11-web-application/src/main/java/com/in28minutes/springboot/myfirstwebapp/todo/TodoService.java`
- [REST API](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java): rest app · JSON API with filtering, versioning, i18n, and exception handling. · `12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java`
- [User API](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/user/UserResource.java): resource · User and post endpoints backed by in-memory and JPA storage. · `12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/user/UserResource.java`

### Full Stack

React frontend plus REST backend integration.

- [Backend API](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/02-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java): rest app · Spring Boot backend for the React todo application. · `13-full-stack/02-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/RestfulWebServicesApplication.java`
- [React UI](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/01-frontend/todo-app/src/App.js): frontend app · Component-based todo frontend with counter and learning examples. · `13-full-stack/01-frontend/todo-app/src/App.js`
- [API Client](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/01-frontend/todo-app/src/components/todo/api/ApiClient.js): client layer · Browser-side service layer for REST and auth calls. · `13-full-stack/01-frontend/todo-app/src/components/todo/api/ApiClient.js`
- [Auth State](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/13-full-stack/01-frontend/todo-app/src/components/todo/security/AuthContext.js): context · Shared authentication state for the React UI. · `13-full-stack/01-frontend/todo-app/src/components/todo/security/AuthContext.js`

### Security

Authentication and authorization configurations.

- [REST Security](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/security/SpringSecurityConfiguration.java): security config · Edge security for the REST API. · `12-rest-api/src/main/java/com/in28minutes/rest/webservices/restfulwebservices/security/SpringSecurityConfiguration.java`
- [Basic Auth](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/71-spring-security/src/main/java/com/in28minutes/learnspringsecurity/basic/BasicAuthSecurityConfiguration.java): security config · Basic authentication boundary for secured REST endpoints. · `71-spring-security/src/main/java/com/in28minutes/learnspringsecurity/basic/BasicAuthSecurityConfiguration.java`
- [JWT Auth](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/71-spring-security/src/main/java/com/in28minutes/learnspringsecurity/jwt/JwtSecurityConfiguration.java): security config · JWT issuance and protected resource configuration. · `71-spring-security/src/main/java/com/in28minutes/learnspringsecurity/jwt/JwtSecurityConfiguration.java`

### Tooling & Infra

Testing, AOP, build tools, Docker, and deployment samples.

- [AOP Demo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/73-spring-aop/src/main/java/com/in28minutes/learnspringaop/aopexample/aspects/LoggingAspect.java): aspect module · Logging and timing aspects around business services. · `73-spring-aop/src/main/java/com/in28minutes/learnspringaop/aopexample/aspects/LoggingAspect.java`
- [JUnit Demo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/51-junit/test/com/in28minutes/junit/MyMathTest.java): testing module · Introductory unit-testing examples and assertions. · `51-junit/test/com/in28minutes/junit/MyMathTest.java`
- [Mockito Demo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/52-mockito/src/test/java/com/in28minutes/mockito/mockitodemo/business/SomeBusinessImplMockTest.java): testing module · Mocking and stubbing examples. · `52-mockito/src/test/java/com/in28minutes/mockito/mockitodemo/business/SomeBusinessImplMockTest.java`
- [Build Tools](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/81-maven/pom.xml): maven/gradle demos · Separate Maven and Gradle learning projects. · `81-maven/pom.xml`
- [Docker Demo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/83-docker/hello-world-java/pom.xml): container demo · Containerized hello-world REST sample. · `83-docker/hello-world-java/pom.xml`
- [AWS Demo](https://github.com/in28minutes/master-spring-and-spring-boot/blob/main/91-aws/02-rest-api-mysql/pom.xml): deployment demo · AWS-oriented REST and full-stack deployment examples. · `91-aws/02-rest-api-mysql/pom.xml`

### External Systems

Databases, browser, and deployment/runtime boundaries.

- **Browser**: runtime · Human-facing runtime for MVC pages and React UI.
- **Database**: external db · H2/MySQL persistence boundary used by the learning apps.
- **Docker**: runtime target · Container runtime target for packaged services.
- **AWS**: deployment target · Cloud deployment target for REST and frontend examples.

## Connections

- Spring Intro → Game Runner: injects · Application context wires GameRunner to console implementations.
- Spring Intro → Hello Config: loads · Bootstraps configuration-based bean definitions.
- Spring Stages → Real World DI: runs · Launchers demonstrate advanced container behavior and bean wiring.
- Boot Basics → Course API: serves · Application exposes course endpoints.
- Boot Basics → Currency Config: serves · Application exposes property-driven configuration endpoint.
- JPA Intro → JDBC Repo: compares · Shows persistence evolution starting with JDBC.
- JPA Intro → JPA Repo: evolves to · Introduces entity-manager based JPA access.
- JPA Intro → Data JPA: evolves to · Ends with Spring Data JPA abstraction.
- JPA Intro → Database: persists to · Repository examples operate against a relational database.
- MVC App → Web Controllers: routes through · Browser requests land in MVC controllers.
- MVC App → Todo Flow: delegates to · Controllers call todo services and repositories.
- MVC App → Browser: renders in · Server-side JSP pages are viewed in the browser.
- Todo Flow → Database: reads/writes · Todo repository persists state in the database.
- REST API → User API: exposes · REST application serves user-oriented JSON resources.
- REST API → REST Security: protected by · Security config sits at the API edge.
- REST API → Database: reads/writes · REST examples use seeded relational storage where applicable.
- Backend API → API Client: called by · Backend endpoints are consumed by the React client layer.
- Backend API → Database: persists to · Todo and auth examples use database-backed storage.
- React UI → API Client: uses · UI components call through the API client layer.
- React UI → Auth State: shares state · Authentication state is distributed through React context.
- React UI → Browser: runs in · React app executes in the browser runtime.
- API Client → Backend API: calls · Browser-side services invoke backend REST endpoints.
- Auth State → Backend API: authenticates with · Login and token flows connect UI state to backend auth.
- Basic Auth → Browser: secures · Basic auth protects browser-facing resources.
- JWT Auth → Browser: secures · JWT-backed resources are accessed from browser clients.
- AOP Demo → Database: cross-cuts · AOP demonstrates intercepting service/data flows rather than persistence itself.
- JUnit Demo → Build Tools: supports · Testing module demonstrates the build/test lifecycle.
- Mockito Demo → Build Tools: supports · Mocking examples are part of the test tooling learning path.
- Docker Demo → Docker: packages for · Sample app is designed for container execution.
- AWS Demo → AWS: deploys to · REST examples are adapted for cloud deployment.
- AWS Demo → Database: uses · AWS examples include MySQL-backed persistence.
