# jlopezz3/java-springboot architecture

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

- Interactive diagram: https://gitdiagram.com/jlopezz3/java-springboot
- Repository: https://github.com/jlopezz3/java-springboot

## Overview

This tree contains several independent Spring Boot examples, not one combined application: an in-memory topic API, a topic/course data API, product CRUD, JPA mapping, and school relationship examples. The principal demonstrated workflow is an HTTP request routed through a controller and service to in-memory state or a repository. Edges are limited to calls shown in sampled source; other projects' source and all README content were unavailable.

Main entry points: [`springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicController.java`](https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicController.java) (Topic controller), [`course-api-data/src/main/java/io/javabrains/course/CourseController.java`](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseController.java) (Course controller), [`course-api-data/src/main/java/io/javabrains/course/CourseService.java`](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseService.java) (Course service), [`course-api-data/src/main/java/io/javabrains/course/CourseRepository.java`](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseRepository.java) (Course repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_memory["In-memory API"]
  node_mem_controller["Topic controller"]
  node_mem_service["Topic service<br/>[TopicService.java]"]
  node_hello["Hello endpoint"]
  node_mem_topic["Topic model<br/>[Topic.java]"]
end

subgraph group_courses["Course data API"]
  node_course_controller["Course controller"]
  node_course_service["Course service<br/>[CourseService.java]"]
  node_course_repo["Course repository"]
  node_course_model["Course model<br/>[Course.java]"]
  node_topic_controller["Topic controller"]
  node_topic_service["Topic service<br/>[TopicService.java]"]
  node_topic_repo["Topic repository"]
  node_topic_model["Topic model<br/>[Topic.java]"]
  node_course_store[("Persistent store")]
end

subgraph group_products["Product CRUD"]
  node_product_controller["Product controller"]
  node_product_service["Product service"]
  node_product_repo["Product repository"]
  node_product_model["Product entity<br/>[Product.java]"]
end

subgraph group_mapping["Order mapping"]
  node_order_controller["Order controller"]
  node_order_request["Order request<br/>[OrderRequest.java]"]
  node_order_response["Order response<br/>[OrderResponse.java]"]
  node_customer_entity["Customer entity<br/>[Customer.java]"]
  node_mapping_product["Product entity<br/>[Product.java]"]
  node_customer_repo["Customer repository"]
  node_mapping_product_repo["Product repository"]
end

subgraph group_school["School relationships"]
  node_student_controller["Student controller"]
  node_student_repo["Student repository"]
  node_student_model["Student entity<br/>[Student.java]"]
  node_subject_controller["Subject controller"]
  node_subject_repo["Subject repository"]
  node_subject_model["Subject entity<br/>[Subject.java]"]
  node_teacher_controller["Teacher controller"]
  node_teacher_repo["Teacher repository"]
  node_teacher_model["Teacher entity<br/>[Teacher.java]"]
end

node_client(("HTTP client"))

node_client -->|"HTTP requests"| node_mem_controller
node_mem_controller -->|"calls"| node_mem_service
node_client -->|"GET /hello"| node_hello
node_client -->|"HTTP requests"| node_course_controller
node_course_controller -->|"calls"| node_course_service
node_course_service -->|"queries and writes"| node_course_repo
node_course_repo -->|"persists"| node_course_store
node_client -->|"HTTP requests"| node_topic_controller
node_topic_controller -->|"calls"| node_topic_service

click node_mem_controller "https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicController.java"
click node_mem_service "https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicService.java"
click node_hello "https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/hello/HelloController.java"
click node_mem_topic "https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/Topic.java"
click node_course_controller "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseController.java"
click node_course_service "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseService.java"
click node_course_repo "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseRepository.java"
click node_course_model "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/Course.java"
click node_topic_controller "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/TopicController.java"
click node_topic_service "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/TopicService.java"
click node_topic_repo "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/TopicRepository.java"
click node_topic_model "https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/Topic.java"
click node_product_controller "https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/controller/ProductController.java"
click node_product_service "https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/service/ProductService.java"
click node_product_repo "https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/repository/ProductRepository.java"
click node_product_model "https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/entity/Product.java"
click node_order_controller "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/controller/OrderController.java"
click node_order_request "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/dto/OrderRequest.java"
click node_order_response "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/dto/OrderResponse.java"
click node_customer_entity "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/entity/Customer.java"
click node_mapping_product "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/entity/Product.java"
click node_customer_repo "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/repository/CustomerRepository.java"
click node_mapping_product_repo "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/repository/ProductRepository.java"
click node_student_controller "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/student/StudentController.java"
click node_student_repo "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/student/StudentRepository.java"
click node_student_model "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/student/Student.java"
click node_subject_controller "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/subject/SubjectController.java"
click node_subject_repo "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/subject/SubjectRepository.java"
click node_subject_model "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/subject/Subject.java"
click node_teacher_controller "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/teacher/TeacherController.java"
click node_teacher_repo "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/teacher/TeacherRepository.java"
click node_teacher_model "https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/teacher/Teacher.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_mem_controller,node_mem_service,node_hello,node_mem_topic,node_client toneBlue
class node_course_controller,node_course_service,node_course_repo,node_course_model,node_topic_controller,node_topic_service,node_topic_repo,node_topic_model,node_course_store toneAmber
class node_product_controller,node_product_service,node_product_repo,node_product_model toneMint
class node_order_controller,node_order_request,node_order_response,node_customer_entity,node_mapping_product,node_customer_repo,node_mapping_product_repo toneRose
class node_student_controller,node_student_repo,node_student_model,node_subject_controller,node_subject_repo,node_subject_model,node_teacher_controller,node_teacher_repo,node_teacher_model toneIndigo
```

## Components

### In-memory API

- [Topic controller](https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicController.java): `springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicController.java`
- [Topic service](https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicService.java): `springboot/src/main/java/io/javabrains/springbootstarter/topic/TopicService.java`
- [Hello endpoint](https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/hello/HelloController.java): `springboot/src/main/java/io/javabrains/springbootstarter/hello/HelloController.java`
- [Topic model](https://github.com/jlopezz3/java-springboot/blob/main/springboot/src/main/java/io/javabrains/springbootstarter/topic/Topic.java): `springboot/src/main/java/io/javabrains/springbootstarter/topic/Topic.java`

### Course data API

- [Course controller](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseController.java): `course-api-data/src/main/java/io/javabrains/course/CourseController.java`
- [Course service](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseService.java): `course-api-data/src/main/java/io/javabrains/course/CourseService.java`
- [Course repository](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/CourseRepository.java): `course-api-data/src/main/java/io/javabrains/course/CourseRepository.java`
- [Course model](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/course/Course.java): `course-api-data/src/main/java/io/javabrains/course/Course.java`
- [Topic controller](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/TopicController.java): `course-api-data/src/main/java/io/javabrains/topic/TopicController.java`
- [Topic service](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/TopicService.java): `course-api-data/src/main/java/io/javabrains/topic/TopicService.java`
- [Topic repository](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/TopicRepository.java): `course-api-data/src/main/java/io/javabrains/topic/TopicRepository.java`
- [Topic model](https://github.com/jlopezz3/java-springboot/blob/main/course-api-data/src/main/java/io/javabrains/topic/Topic.java): `course-api-data/src/main/java/io/javabrains/topic/Topic.java`
- **Persistent store**

### Product CRUD

- [Product controller](https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/controller/ProductController.java): `spring-boot-crud-example-2/src/main/java/com/example/crud/example/controller/ProductController.java`
- [Product service](https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/service/ProductService.java): `spring-boot-crud-example-2/src/main/java/com/example/crud/example/service/ProductService.java`
- [Product repository](https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/repository/ProductRepository.java): `spring-boot-crud-example-2/src/main/java/com/example/crud/example/repository/ProductRepository.java`
- [Product entity](https://github.com/jlopezz3/java-springboot/blob/main/spring-boot-crud-example-2/src/main/java/com/example/crud/example/entity/Product.java): `spring-boot-crud-example-2/src/main/java/com/example/crud/example/entity/Product.java`

### Order mapping

- [Order controller](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/controller/OrderController.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/controller/OrderController.java`
- [Order request](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/dto/OrderRequest.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/dto/OrderRequest.java`
- [Order response](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/dto/OrderResponse.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/dto/OrderResponse.java`
- [Customer entity](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/entity/Customer.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/entity/Customer.java`
- [Product entity](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/entity/Product.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/entity/Product.java`
- [Customer repository](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/repository/CustomerRepository.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/repository/CustomerRepository.java`
- [Product repository](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-mapping/src/main/java/com/example/jpa/repository/ProductRepository.java): `spring-data-jpa-mapping/src/main/java/com/example/jpa/repository/ProductRepository.java`

### School relationships

- [Student controller](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/student/StudentController.java): `spring-data-jpa-relationships/src/main/java/com/example/school/student/StudentController.java`
- [Student repository](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/student/StudentRepository.java): `spring-data-jpa-relationships/src/main/java/com/example/school/student/StudentRepository.java`
- [Student entity](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/student/Student.java): `spring-data-jpa-relationships/src/main/java/com/example/school/student/Student.java`
- [Subject controller](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/subject/SubjectController.java): `spring-data-jpa-relationships/src/main/java/com/example/school/subject/SubjectController.java`
- [Subject repository](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/subject/SubjectRepository.java): `spring-data-jpa-relationships/src/main/java/com/example/school/subject/SubjectRepository.java`
- [Subject entity](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/subject/Subject.java): `spring-data-jpa-relationships/src/main/java/com/example/school/subject/Subject.java`
- [Teacher controller](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/teacher/TeacherController.java): `spring-data-jpa-relationships/src/main/java/com/example/school/teacher/TeacherController.java`
- [Teacher repository](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/teacher/TeacherRepository.java): `spring-data-jpa-relationships/src/main/java/com/example/school/teacher/TeacherRepository.java`
- [Teacher entity](https://github.com/jlopezz3/java-springboot/blob/main/spring-data-jpa-relationships/src/main/java/com/example/school/teacher/Teacher.java): `spring-data-jpa-relationships/src/main/java/com/example/school/teacher/Teacher.java`

### Other components

- **HTTP client**

## Connections

- HTTP client → Topic controller: HTTP requests
- Topic controller → Topic service: calls
- HTTP client → Hello endpoint: GET /hello
- HTTP client → Course controller: HTTP requests
- Course controller → Course service: calls
- Course service → Course repository: queries and writes
- Course repository → Persistent store: persists
- HTTP client → Topic controller: HTTP requests
- Topic controller → Topic service: calls
