# realpdai/tech-pdai-spring-demos architecture

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

- Interactive diagram: https://gitdiagram.com/realpdai/tech-pdai-spring-demos
- Repository: https://github.com/realpdai/tech-pdai-spring-demos

## Overview

This repository is a collection of Spring Framework and Spring Boot learning examples, not one integrated application. Its principal demonstrated workflow is HTTP job-management requests entering a controller, which delegates schedule changes or queries to a Quartz manager; the manager operates Quartz and returns job information. Other branches cover IoC/AOP and MVC fundamentals, Spring Boot MVC and API concerns, and operational or testing examples. The README documents a broader curriculum than the sampled source; links are shown only where the tree, README, or excerpts support them.

Main entry points: [`423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/manager/QuartzManager.java`](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/manager/QuartzManager.java) (Quartz Manager), [`102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/service/UserService.java`](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/service/UserService.java) (User Service), [`423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java`](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java) (Job Controller), [`102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/controller/UserController.java`](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/controller/UserController.java) (Boot MVC Layers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_framework["Spring Framework"]
  node_xmlhello["XML IoC Demo<br/>[App.java]"]
  node_javaconfig["Java Config Demo<br/>[BeansConfig.java]"]
  node_annotation["Annotation Demo<br/>[App.java]"]
  node_aopxml["XML AOP Demo<br/>[App.java]"]
  node_aopproxy["Proxy Demos<br/>[ProxyDemo.java]"]
  node_lifecycle["Bean Lifecycle"]
  node_mvclegacy["Spring MVC"]
end

subgraph group_boot["Spring Boot"]
  node_boothello["Boot Hello World"]
  node_bootmvc["Boot MVC Layers"]
  node_bootservice["User Service<br/>[UserService.java]"]
  node_bootrepo["User Repository"]
end

subgraph group_api["API Design"]
  node_swagger["API Documentation<br/>[SwaggerConfig.java]"]
  node_validation["Request Validation"]
  node_versioning["API Versioning"]
  node_signing["API Signing<br/>[SignAspect.java]"]
end

subgraph group_ops["Operations And Tests"]
  node_actuator["Custom Actuator"]
  node_unitexample["Unit Test Example"]
end

subgraph group_jobs["Scheduled Jobs"]
  node_httpclient(("HTTP Client<br/>[JobController.java]"))
  node_jobcontroller["Job Controller<br/>[JobController.java]"]
  node_quartzmanager["Quartz Manager<br/>[QuartzManager.java]"]
  node_quartz["Quartz Scheduler"]
  node_jobresponse["Job Query Response"]
end

node_learner(("Learner"))

node_learner -->|"explores IoC"| node_xmlhello
node_learner -->|"explores IoC"| node_javaconfig
node_learner -->|"explores IoC"| node_annotation
node_learner -->|"explores AOP"| node_aopxml
node_learner -->|"explores proxies"| node_aopproxy
node_learner -->|"explores lifecycle"| node_lifecycle
node_learner -->|"explores MVC"| node_mvclegacy
node_learner -->|"explores Boot"| node_boothello
node_learner -->|"explores docs"| node_swagger
node_learner -->|"explores validation"| node_validation
node_learner -->|"explores versions"| node_versioning
node_learner -->|"explores signing"| node_signing
node_learner -->|"explores monitoring"| node_actuator
node_learner -->|"explores testing"| node_unitexample
node_httpclient -->|"sends requests"| node_jobcontroller
node_jobcontroller -->|"delegates job operations"| node_quartzmanager
node_quartzmanager -->|"schedules and queries"| node_quartz
node_quartzmanager -->|"returns query data"| node_jobresponse
node_bootmvc -.->|"declares service usage"| node_bootservice
node_bootservice -.->|"declares data layer"| node_bootrepo

click node_xmlhello "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/001-spring-framework-demo-helloworld-xml/src/main/java/tech/pdai/springframework/App.java"
click node_javaconfig "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/002-spring-framework-demo-helloworld-java/src/main/java/tech/pdai/springframework/config/BeansConfig.java"
click node_annotation "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/003-spring-framework-demo-helloworld-anno/src/main/java/tech/pdai/springframework/App.java"
click node_aopxml "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/004-spring-framework-demo-aop-xml/src/main/java/App.java"
click node_aopproxy "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/006-spring-framework-demo-aop-proxy-jdk/src/main/java/tech/pdai/springframework/ProxyDemo.java"
click node_lifecycle "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/008-spring-framework-demo-bean-lifecycle/src/main/java/tech/pdai/springframework/processor/MyBeanPostProcessor.java"
click node_mvclegacy "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/011-spring-framework-demo-springmvc/src/main/java/tech/pdai/springframework/springmvc/controller/UserController.java"
click node_boothello "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/101-springboot-demo-helloworld/src/main/java/tech/pdai/springboot/helloworld/SpringBootHelloWorldApplication.java"
click node_bootmvc "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/controller/UserController.java"
click node_bootservice "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/service/UserService.java"
click node_bootrepo "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/dao/UserRepository.java"
click node_swagger "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/111-springboot-demo-swagger-v2/src/main/java/tech/pdai/springboot/swagger/config/SwaggerConfig.java"
click node_validation "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/141-springboot-demo-validation/src/main/java/tech/pdai/springboot/validation/controller/UserController.java"
click node_versioning "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/151-springboot-demo-api-multi-version/src/main/java/tech/pdai/springboot/api/version/config/version/ApiVersionRequestMappingHandlerMapping.java"
click node_signing "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/153-springboot-demo-api-sign/src/main/java/tech/pdai/springboot/api/sign/config/sign/SignAspect.java"
click node_actuator "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/161-springboot-demo-actuator/src/main/java/tech/pdai/springboot/actuator/CustomEndpointController.java"
click node_unitexample "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/197-springboot-demo-junit-v5-mockito/src/main/java/tech/pdai/springboot2unit5/controller/UserController.java"
click node_httpclient "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java"
click node_jobcontroller "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java"
click node_quartzmanager "https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/manager/QuartzManager.java"

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_xmlhello,node_javaconfig,node_annotation,node_aopxml,node_aopproxy,node_lifecycle,node_mvclegacy toneBlue
class node_boothello,node_bootmvc,node_bootservice,node_bootrepo toneAmber
class node_swagger,node_validation,node_versioning,node_signing toneMint
class node_actuator,node_unitexample toneRose
class node_httpclient,node_jobcontroller,node_quartzmanager,node_quartz,node_jobresponse,node_learner toneIndigo
```

## Components

### Spring Framework

- [XML IoC Demo](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/001-spring-framework-demo-helloworld-xml/src/main/java/tech/pdai/springframework/App.java): `001-spring-framework-demo-helloworld-xml/src/main/java/tech/pdai/springframework/App.java`
- [Java Config Demo](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/002-spring-framework-demo-helloworld-java/src/main/java/tech/pdai/springframework/config/BeansConfig.java): `002-spring-framework-demo-helloworld-java/src/main/java/tech/pdai/springframework/config/BeansConfig.java`
- [Annotation Demo](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/003-spring-framework-demo-helloworld-anno/src/main/java/tech/pdai/springframework/App.java): `003-spring-framework-demo-helloworld-anno/src/main/java/tech/pdai/springframework/App.java`
- [XML AOP Demo](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/004-spring-framework-demo-aop-xml/src/main/java/App.java): `004-spring-framework-demo-aop-xml/src/main/java/App.java`
- [Proxy Demos](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/006-spring-framework-demo-aop-proxy-jdk/src/main/java/tech/pdai/springframework/ProxyDemo.java): `006-spring-framework-demo-aop-proxy-jdk/src/main/java/tech/pdai/springframework/ProxyDemo.java`
- [Bean Lifecycle](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/008-spring-framework-demo-bean-lifecycle/src/main/java/tech/pdai/springframework/processor/MyBeanPostProcessor.java): `008-spring-framework-demo-bean-lifecycle/src/main/java/tech/pdai/springframework/processor/MyBeanPostProcessor.java`
- [Spring MVC](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/011-spring-framework-demo-springmvc/src/main/java/tech/pdai/springframework/springmvc/controller/UserController.java): `011-spring-framework-demo-springmvc/src/main/java/tech/pdai/springframework/springmvc/controller/UserController.java`

### Spring Boot

- [Boot Hello World](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/101-springboot-demo-helloworld/src/main/java/tech/pdai/springboot/helloworld/SpringBootHelloWorldApplication.java): `101-springboot-demo-helloworld/src/main/java/tech/pdai/springboot/helloworld/SpringBootHelloWorldApplication.java`
- [Boot MVC Layers](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/controller/UserController.java): `102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/controller/UserController.java`
- [User Service](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/service/UserService.java): `102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/service/UserService.java`
- [User Repository](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/dao/UserRepository.java): `102-springboot-demo-helloworld-mvc/src/main/java/tech/pdai/springboot/helloworld/dao/UserRepository.java`

### API Design

- [API Documentation](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/111-springboot-demo-swagger-v2/src/main/java/tech/pdai/springboot/swagger/config/SwaggerConfig.java): `111-springboot-demo-swagger-v2/src/main/java/tech/pdai/springboot/swagger/config/SwaggerConfig.java`
- [Request Validation](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/141-springboot-demo-validation/src/main/java/tech/pdai/springboot/validation/controller/UserController.java): `141-springboot-demo-validation/src/main/java/tech/pdai/springboot/validation/controller/UserController.java`
- [API Versioning](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/151-springboot-demo-api-multi-version/src/main/java/tech/pdai/springboot/api/version/config/version/ApiVersionRequestMappingHandlerMapping.java): `151-springboot-demo-api-multi-version/src/main/java/tech/pdai/springboot/api/version/config/version/ApiVersionRequestMappingHandlerMapping.java`
- [API Signing](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/153-springboot-demo-api-sign/src/main/java/tech/pdai/springboot/api/sign/config/sign/SignAspect.java): `153-springboot-demo-api-sign/src/main/java/tech/pdai/springboot/api/sign/config/sign/SignAspect.java`

### Operations And Tests

- [Custom Actuator](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/161-springboot-demo-actuator/src/main/java/tech/pdai/springboot/actuator/CustomEndpointController.java): `161-springboot-demo-actuator/src/main/java/tech/pdai/springboot/actuator/CustomEndpointController.java`
- [Unit Test Example](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/197-springboot-demo-junit-v5-mockito/src/main/java/tech/pdai/springboot2unit5/controller/UserController.java): `197-springboot-demo-junit-v5-mockito/src/main/java/tech/pdai/springboot2unit5/controller/UserController.java`

### Scheduled Jobs

- [HTTP Client](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java): `423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java`
- [Job Controller](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java): `423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/controller/JobController.java`
- [Quartz Manager](https://github.com/realpdai/tech-pdai-spring-demos/blob/main/423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/manager/QuartzManager.java): `423-springboot-demo-schedule-quartz-cluster/src/main/java/tech/pdai/springboot/quartz/cluster/manager/QuartzManager.java`
- **Quartz Scheduler**
- **Job Query Response**

### Other components

- **Learner**

## Connections

- Learner → XML IoC Demo: explores IoC
- Learner → Java Config Demo: explores IoC
- Learner → Annotation Demo: explores IoC
- Learner → XML AOP Demo: explores AOP
- Learner → Proxy Demos: explores proxies
- Learner → Bean Lifecycle: explores lifecycle
- Learner → Spring MVC: explores MVC
- Learner → Boot Hello World: explores Boot
- Learner → API Documentation: explores docs
- Learner → Request Validation: explores validation
- Learner → API Versioning: explores versions
- Learner → API Signing: explores signing
- Learner → Custom Actuator: explores monitoring
- Learner → Unit Test Example: explores testing
- HTTP Client → Job Controller: sends requests
- Job Controller → Quartz Manager: delegates job operations
- Quartz Manager → Quartz Scheduler: schedules and queries
- Quartz Manager → Job Query Response: returns query data
- Boot MVC Layers → User Service: declares service usage
- User Service → User Repository: declares data layer
