# chentong2015/springbootapplications architecture

> Architecture diagram of the GitHub repository chentong2015/springbootapplications, 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/chentong2015/springbootapplications
- Repository: https://github.com/chentong2015/springbootapplications

## Overview

This repository is a collection of Spring Boot examples and starter templates demonstrating HTTP endpoints, configuration and resources, auto-configuration, metrics, static resources, and a Tomcat-based application. The principal workflow is an HTTP request dispatched to a mapped controller, which returns a response; individual examples cover request inputs, redirects, versioning, and response forms. Source excerpts are partial and the README is empty, so links between unsampled subsystems are omitted unless supported by the tree or sampled code.

Main entry points: [`spring-boot-app/src/main/java/com/springboot/main/controller/response_entity`](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/response_entity) (Response entities), [`spring-boot-app/src/main/java/com/springboot/main/controller/private_endpoints`](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/private_endpoints) (Private endpoints), [`spring-boot-app/src/main/java/com/springboot/main/controller/HttpRequestController.java`](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/HttpRequestController.java) (Request handling), [`spring-boot-app/src/main/java/com/springboot/main/controller/controller_rest`](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/controller_rest) (REST request inputs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["HTTP examples"]
  node_http_request["Request handling"]
  node_rest_inputs["REST request inputs"]
  node_controller_forms["Controller forms"]
  node_response_entities["Response entities"]
  node_api_versioning["API versioning"]
  node_redirects["Redirects"]
  node_private_endpoints["Private endpoints"]
  node_private_service["Private service"]
  node_response_model["Response model"]
end

subgraph group_configuration["Configuration and resources"]
  node_app_entry["Application entry"]
  node_app_config["Application configuration"]
  node_properties["Custom properties"]
  node_resource_endpoints["Resource endpoints"]
  node_resource_loader["Resource loading"]
end

subgraph group_extensions["Boot extensions"]
  node_auto_config["Auto-configuration"]
  node_config_selector["Configuration selector"]
  node_conditional_config["Conditional configuration"]
  node_metrics_app["Metrics application"]
  node_disk_metrics["Disk metrics"]
end

subgraph group_runtime["Server and static web"]
  node_static_app["Static resources app"]
  node_static_config["Static resource configuration"]
  node_tomcat_starter["Tomcat starter"]
  node_tomcat_app["Tomcat application"]
  node_home_endpoint["Home endpoint"]
end

subgraph group_templates["Starter templates"]
  node_server_template["Template server"]
  node_server_config["Server configuration"]
  node_server_enable["Server enablement"]
  node_demo_api["Shared demo API<br/>[DemoClass.java]"]
  node_client_template["Template client"]
  node_client_config["Client configuration"]
end

node_client(("HTTP client"))

node_client -->|"sends request"| node_http_request
node_client -->|"sends request"| node_rest_inputs
node_client -->|"sends request"| node_controller_forms
node_client -->|"sends request"| node_response_entities
node_client -->|"sends request"| node_api_versioning
node_client -->|"sends request"| node_redirects
node_client -->|"sends request"| node_private_endpoints
node_client -->|"sends request"| node_resource_endpoints
node_http_request -->|"returns response"| node_client
node_rest_inputs -->|"returns response"| node_client
node_controller_forms -->|"returns response"| node_client
node_response_entities -->|"creates response"| node_response_model
node_response_entities -->|"returns response"| node_client
node_api_versioning -->|"returns response"| node_client
node_redirects -->|"returns redirect"| node_client
node_private_endpoints -->|"calls"| node_private_service
node_private_endpoints -->|"returns response"| node_client
node_resource_endpoints -->|"returns content"| node_client
node_server_template -->|"calls"| node_demo_api
node_client -->|"requests home"| node_home_endpoint
node_home_endpoint -->|"returns response"| node_client

click node_http_request "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/HttpRequestController.java"
click node_rest_inputs "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/controller_rest"
click node_controller_forms "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/controller_vs_rest"
click node_response_entities "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/response_entity"
click node_api_versioning "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/versioning/ApiVersioningController.java"
click node_redirects "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/RedirectController.java"
click node_private_endpoints "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/private_endpoints"
click node_private_service "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/service/PrivateService.java"
click node_response_model "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/model/ResponseObject.java"
click node_app_entry "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/SpringBootStarterApplication.java"
click node_app_config "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/config/ApplicationConfiguration.java"
click node_properties "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/properties"
click node_resource_endpoints "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/resources/ResourcesController.java"
click node_resource_loader "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/resources/ResourcesPropertyLoader.java"
click node_auto_config "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-autoconfigure/src/main/java/auto_configure"
click node_config_selector "https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-autoconfigure/src/main/java/auto_configure_selector"
click node_conditional_config "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-autoconfigure/src/main/java/conditional_config/ConditionalConfiguration.java"
click node_metrics_app "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-metrics/src/main/java/org/springboot/metrics/SpringBootMetricsApp.java"
click node_disk_metrics "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-metrics/src/main/java/org/springboot/metrics/DiskSpaceMetrics.java"
click node_static_app "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-static-resources/src/main/java/org/springboot/resource/WebStaticResourceApp.java"
click node_static_config "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-static-resources/src/main/java/org/springboot/resource/WebConfiguration.java"
click node_tomcat_starter "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-tomcat-container/src/main/java/com/springboot/tomcat/SpringTomcatStarter.java"
click node_tomcat_app "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-tomcat-container/src/main/java/com/springboot/MySpringBootApplication.java"
click node_home_endpoint "https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-tomcat-container/src/main/java/com/springboot/controller/HomeController.java"
click node_server_template "https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-server/src/main/java/com/springboot/server/ServerController.java"
click node_server_config "https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-server/src/main/java/com/springboot/server/ServerConfiguration.java"
click node_server_enable "https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-server/src/main/java/com/springboot/server/EnableSpringBootServer.java"
click node_demo_api "https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-common-api/src/main/java/com/springboot/api/DemoClass.java"
click node_client_template "https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-client/src/main/java/com/springboot/client/SpringClientApplication.java"
click node_client_config "https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-client/src/main/java/com/springboot/client/ClientConfiguration.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_http_request,node_rest_inputs,node_controller_forms,node_response_entities,node_api_versioning,node_redirects,node_private_endpoints,node_private_service,node_response_model,node_client toneBlue
class node_app_entry,node_app_config,node_properties,node_resource_endpoints,node_resource_loader toneAmber
class node_auto_config,node_config_selector,node_conditional_config,node_metrics_app,node_disk_metrics toneMint
class node_static_app,node_static_config,node_tomcat_starter,node_tomcat_app,node_home_endpoint toneRose
class node_server_template,node_server_config,node_server_enable,node_demo_api,node_client_template,node_client_config toneIndigo
```

## Components

### HTTP examples

- [Request handling](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/HttpRequestController.java): `spring-boot-app/src/main/java/com/springboot/main/controller/HttpRequestController.java`
- [REST request inputs](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/controller_rest): `spring-boot-app/src/main/java/com/springboot/main/controller/controller_rest`
- [Controller forms](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/controller_vs_rest): `spring-boot-app/src/main/java/com/springboot/main/controller/controller_vs_rest`
- [Response entities](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/response_entity): `spring-boot-app/src/main/java/com/springboot/main/controller/response_entity`
- [API versioning](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/versioning/ApiVersioningController.java): `spring-boot-app/src/main/java/com/springboot/main/controller/versioning/ApiVersioningController.java`
- [Redirects](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/controller/RedirectController.java): `spring-boot-app/src/main/java/com/springboot/main/controller/RedirectController.java`
- [Private endpoints](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/controller/private_endpoints): `spring-boot-app/src/main/java/com/springboot/main/controller/private_endpoints`
- [Private service](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/service/PrivateService.java): `spring-boot-app/src/main/java/com/springboot/main/service/PrivateService.java`
- [Response model](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/model/ResponseObject.java): `spring-boot-app/src/main/java/com/springboot/main/model/ResponseObject.java`

### Configuration and resources

- [Application entry](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/SpringBootStarterApplication.java): `spring-boot-app/src/main/java/com/springboot/main/SpringBootStarterApplication.java`
- [Application configuration](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/config/ApplicationConfiguration.java): `spring-boot-app/src/main/java/com/springboot/main/config/ApplicationConfiguration.java`
- [Custom properties](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-app/src/main/java/com/springboot/main/properties): `spring-boot-app/src/main/java/com/springboot/main/properties`
- [Resource endpoints](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/resources/ResourcesController.java): `spring-boot-app/src/main/java/com/springboot/main/resources/ResourcesController.java`
- [Resource loading](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-app/src/main/java/com/springboot/main/resources/ResourcesPropertyLoader.java): `spring-boot-app/src/main/java/com/springboot/main/resources/ResourcesPropertyLoader.java`

### Boot extensions

- [Auto-configuration](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-autoconfigure/src/main/java/auto_configure): `spring-boot-autoconfigure/src/main/java/auto_configure`
- [Configuration selector](https://github.com/chentong2015/springbootapplications/tree/main/spring-boot-autoconfigure/src/main/java/auto_configure_selector): `spring-boot-autoconfigure/src/main/java/auto_configure_selector`
- [Conditional configuration](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-autoconfigure/src/main/java/conditional_config/ConditionalConfiguration.java): `spring-boot-autoconfigure/src/main/java/conditional_config/ConditionalConfiguration.java`
- [Metrics application](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-metrics/src/main/java/org/springboot/metrics/SpringBootMetricsApp.java): `spring-boot-metrics/src/main/java/org/springboot/metrics/SpringBootMetricsApp.java`
- [Disk metrics](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-metrics/src/main/java/org/springboot/metrics/DiskSpaceMetrics.java): `spring-boot-metrics/src/main/java/org/springboot/metrics/DiskSpaceMetrics.java`

### Server and static web

- [Static resources app](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-static-resources/src/main/java/org/springboot/resource/WebStaticResourceApp.java): `spring-boot-static-resources/src/main/java/org/springboot/resource/WebStaticResourceApp.java`
- [Static resource configuration](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-static-resources/src/main/java/org/springboot/resource/WebConfiguration.java): `spring-boot-static-resources/src/main/java/org/springboot/resource/WebConfiguration.java`
- [Tomcat starter](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-tomcat-container/src/main/java/com/springboot/tomcat/SpringTomcatStarter.java): `spring-boot-tomcat-container/src/main/java/com/springboot/tomcat/SpringTomcatStarter.java`
- [Tomcat application](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-tomcat-container/src/main/java/com/springboot/MySpringBootApplication.java): `spring-boot-tomcat-container/src/main/java/com/springboot/MySpringBootApplication.java`
- [Home endpoint](https://github.com/chentong2015/springbootapplications/blob/main/spring-boot-tomcat-container/src/main/java/com/springboot/controller/HomeController.java): `spring-boot-tomcat-container/src/main/java/com/springboot/controller/HomeController.java`

### Starter templates

- [Template server](https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-server/src/main/java/com/springboot/server/ServerController.java): `template-skeleton/spring-boot-server/src/main/java/com/springboot/server/ServerController.java`
- [Server configuration](https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-server/src/main/java/com/springboot/server/ServerConfiguration.java): `template-skeleton/spring-boot-server/src/main/java/com/springboot/server/ServerConfiguration.java`
- [Server enablement](https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-server/src/main/java/com/springboot/server/EnableSpringBootServer.java): `template-skeleton/spring-boot-server/src/main/java/com/springboot/server/EnableSpringBootServer.java`
- [Shared demo API](https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-common-api/src/main/java/com/springboot/api/DemoClass.java): `template-skeleton/spring-common-api/src/main/java/com/springboot/api/DemoClass.java`
- [Template client](https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-client/src/main/java/com/springboot/client/SpringClientApplication.java): `template-skeleton/spring-boot-client/src/main/java/com/springboot/client/SpringClientApplication.java`
- [Client configuration](https://github.com/chentong2015/springbootapplications/blob/main/template-skeleton/spring-boot-client/src/main/java/com/springboot/client/ClientConfiguration.java): `template-skeleton/spring-boot-client/src/main/java/com/springboot/client/ClientConfiguration.java`

### Other components

- **HTTP client**

## Connections

- HTTP client → Request handling: sends request
- HTTP client → REST request inputs: sends request
- HTTP client → Controller forms: sends request
- HTTP client → Response entities: sends request
- HTTP client → API versioning: sends request
- HTTP client → Redirects: sends request
- HTTP client → Private endpoints: sends request
- HTTP client → Resource endpoints: sends request
- Request handling → HTTP client: returns response
- REST request inputs → HTTP client: returns response
- Controller forms → HTTP client: returns response
- Response entities → Response model: creates response
- Response entities → HTTP client: returns response
- API versioning → HTTP client: returns response
- Redirects → HTTP client: returns redirect
- Private endpoints → Private service: calls
- Private endpoints → HTTP client: returns response
- Resource endpoints → HTTP client: returns content
- Template server → Shared demo API: calls
- HTTP client → Home endpoint: requests home
- Home endpoint → HTTP client: returns response
