Skip to content

Latest commit

ย 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ›๏ธ ืžืขืจื›ืช ื ื™ื”ื•ืœ ืžื•ืฆืจื™ื ื•ืžืฉืชืžืฉื™ื - Spring Boot

Java Spring Boot PostgreSQL Docker Maven

๐Ÿ“‹ ืชื™ืื•ืจ ื”ืคืจื•ื™ืงื˜

ืžืขืจื›ืช ื ื™ื”ื•ืœ ืžื•ืฆืจื™ื ื•ืžืฉืชืžืฉื™ื ืžืชืงื“ืžืช ื”ื‘ื ื•ื™ื” ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ microservices ืขื Spring Boot. ื”ืžืขืจื›ืช ื›ื•ืœืœืช ืžืžืฉืง ืื“ืžื™ืŸ ืœื ื™ื”ื•ืœ ืžื•ืฆืจื™ื, ืจื™ืฉื•ื ื•ื”ืชื—ื‘ืจื•ืช ืžืฉืชืžืฉื™ื, ื•ื ื™ื”ื•ืœ ืžืกื“ ื ืชื•ื ื™ื ืžืชืงื“ื.

๐Ÿ—๏ธ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืžืขืจื›ืช

โ”œโ”€โ”€ ๐Ÿ” Security Service (Port 8081)
โ”‚   โ”œโ”€โ”€ JWT Authentication
โ”‚   โ”œโ”€โ”€ Spring Security
โ”‚   โ””โ”€โ”€ WebFlux Gateway
โ”‚
โ”œโ”€โ”€ ๐Ÿ“Š JPA Service (Port 8082)
โ”‚   โ”œโ”€โ”€ Product Management
โ”‚   โ”œโ”€โ”€ User Management
โ”‚   โ”œโ”€โ”€ PostgreSQL Integration
โ”‚   โ””โ”€โ”€ Aspect-Oriented Programming
โ”‚
โ””โ”€โ”€ ๐Ÿ—„๏ธ PostgreSQL Database (Port 5432)
    โ”œโ”€โ”€ Products Table
    โ””โ”€โ”€ Users Table

๐Ÿ› ๏ธ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื•ืžืกื’ืจื•ืช

Backend Technologies

  • Java 21 - ืฉืคืช ื”ืชื›ื ื•ืช ื”ืจืืฉื™ืช
  • Spring Boot 3.2.5 - ืžืกื’ืจืช ื”ืคื™ืชื•ื— ื”ืจืืฉื™ืช
  • Spring Data JPA - ื ื™ื”ื•ืœ ืžืกื“ ื ืชื•ื ื™ื
  • Spring Security - ืื‘ื˜ื—ื” ื•ื”ืจืฉืื•ืช
  • Spring WebFlux - ืชื›ื ื•ืช ืจื™ืืงื˜ื™ื‘ื™
  • Spring AOP - ืชื›ื ื•ืช ืžื•ื›ื•ื•ืŸ ื”ื™ื‘ื˜ื™ื

Database & Infrastructure

  • PostgreSQL 15 - ืžืกื“ ื ืชื•ื ื™ื ื™ื—ืกื™
  • Docker & Docker Compose - ืงื•ื ื˜ื™ื™ื ืจื™ื–ืฆื™ื”
  • Maven - ื ื™ื”ื•ืœ dependencies

Security & Authentication

  • JWT (JSON Web Tokens) - ืื™ืžื•ืช ื•ื”ืจืฉืื”
  • JJWT Library 0.11.5 - ื™ืฆื™ืจืช ื•ืื™ืžื•ืช JWT

Development Tools

  • Lombok - ื”ืคื—ืชืช boilerplate code
  • Aspect-Oriented Programming - logging ื•ื ื™ื˜ื•ืจ

๐Ÿ“ธ ืฆื™ืœื•ืžื™ ืžืกืš

๐Ÿ  ื“ืฃ ื”ื‘ื™ืช - ืžืžืฉืง ื”ืžืฉืชืžืฉ

User Interface ืžืžืฉืง ืจืืฉื™ ืขื ืืคืฉืจื•ื™ื•ืช ื”ื•ืกืคืช ืžื•ืฆืจื™ื ื•ืจื™ืฉื•ื ืžืฉืชืžืฉื™ื

๐Ÿ‘ค ืจื™ืฉื•ื ืžืฉืชืžืฉ ื—ื“ืฉ

User Registration ื˜ื•ืคืก ืจื™ืฉื•ื ืžืฉืชืžืฉ ื—ื“ืฉ ืœืžืขืจื›ืช

๐Ÿ”‘ ื”ืชื—ื‘ืจื•ืช ืœืžืขืจื›ืช

User Login ืžืกืš ื”ืชื—ื‘ืจื•ืช ืขื ืื™ืžื•ืช ืžืฉืชืžืฉ

๐Ÿ›ก๏ธ ืคืื ืœ ืื“ืžื™ืŸ - ื ื™ื”ื•ืœ ืžื•ืฆืจื™ื

Admin Panel ืžืžืฉืง ืื“ืžื™ืŸ ืžืชืงื“ื ืœื ื™ื”ื•ืœ ืžื•ืฆืจื™ื ืขื ืืคืฉืจื•ื™ื•ืช ืžื—ื™ืงื”

๐Ÿš€ ื”ืชืงื ื” ื•ื”ืคืขืœื”

ื“ืจื™ืฉื•ืช ืžืขืจื›ืช

  • Docker Desktop
  • Java 21 (ืื•ืคืฆื™ื•ื ืœื™ ืœืคื™ืชื•ื—)
  • Git

ื”ืคืขืœืช ื”ืžืขืจื›ืช

# ืฉื›ืคื•ืœ ื”ืคืจื•ื™ืงื˜
git clone <repository-url>
cd FinalProject

# ื”ืคืขืœืช ื”ืžืขืจื›ืช ืขื Docker
docker-compose up --build

# ืื• ื‘ืคื•ืŸ ืจืงืข
docker-compose up -d --build

ื‘ื“ื™ืงืช ื”ืžืขืจื›ืช

# ื‘ื“ื™ืงืช ืงื•ื ื˜ื™ื™ื ืจื™ื ืคืขื™ืœื™ื
docker ps

# ืฆืคื™ื™ื” ื‘ืœื•ื’ื™ื
docker-compose logs -f

๐ŸŒ API Endpoints

Products API (JPA Service - Port 8082)

Method Endpoint Description
GET /products ืงื‘ืœืช ื›ืœ ื”ืžื•ืฆืจื™ื
POST /products/add ื”ื•ืกืคืช ืžื•ืฆืจ ื—ื“ืฉ
DELETE /products/{id} ืžื—ื™ืงืช ืžื•ืฆืจ ืœืคื™ ID
DELETE /products/all ืžื—ื™ืงืช ื›ืœ ื”ืžื•ืฆืจื™ื

Users API (JPA Service - Port 8082)

Method Endpoint Description
GET /users ืงื‘ืœืช ื›ืœ ื”ืžืฉืชืžืฉื™ื
GET /users/{id} ืงื‘ืœืช ืžืฉืชืžืฉ ืœืคื™ ID
POST /users/add ื”ื•ืกืคืช ืžืฉืชืžืฉ ื—ื“ืฉ

ื“ื•ื’ืžืื•ืช ืฉื™ืžื•ืฉ

ื”ื•ืกืคืช ืžื•ืฆืจ ื—ื“ืฉ

curl -X POST http://localhost:8082/products/add \
  -H "Content-Type: application/json" \
  -d '{"name": "laptop", "price": 3500.00}'

ืžื—ื™ืงืช ืžื•ืฆืจ ืกืคืฆื™ืคื™

curl -X DELETE http://localhost:8082/products/1

ืจื™ืฉื•ื ืžืฉืชืžืฉ ื—ื“ืฉ

curl -X POST http://localhost:8082/users/add \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "address": "123 Main St", "phoneNumber": "0501234567"}'

๐Ÿ“ ืžื‘ื ื” ื”ืคืจื•ื™ืงื˜

FinalProject/
โ”œโ”€โ”€ ๐Ÿ“‚ demo/ (JPA Service)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ src/main/java/com/example/demo/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Aspects/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ LoggingAspect.java
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Controllers/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ProductController.java
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ UserController.java
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Entities/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Product.java
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ User.java
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Carditional.java
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Repositories/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ProductRepository.java
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ UserRepository.java
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ Services/
โ”‚   โ”‚       โ””โ”€โ”€ ProductService.java
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ src/main/resources/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ static/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.html
โ”‚   โ”‚   โ””โ”€โ”€ application.properties
โ”‚   โ””โ”€โ”€ Dockerfile
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ Security/ (Security Service)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ src/main/java/com/example/demo/
โ”‚   โ”‚   โ””โ”€โ”€ DemoApplication.java
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ src/main/resources/
โ”‚   โ”‚   โ””โ”€โ”€ application.properties
โ”‚   โ””โ”€โ”€ Dockerfile
โ”‚
โ”œโ”€โ”€ ๐Ÿ“‚ images/
โ”‚   โ”œโ”€โ”€ admin.png
โ”‚   โ”œโ”€โ”€ login.png
โ”‚   โ”œโ”€โ”€ register.png
โ”‚   โ””โ”€โ”€ user.png
โ”‚
โ”œโ”€โ”€ docker-compose.yaml
โ””โ”€โ”€ README.md

โš™๏ธ ื”ื’ื“ืจื•ืช ืžืชืงื“ืžื•ืช

ืžืฉืชื ื™ื ืฉืœ Environment

# PostgreSQL
POSTGRES_USER: postgres
POSTGRES_PASSWORD: secret
POSTGRES_DB: app_db

# Spring Boot
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres-db:5432/app_db
SPRING_JPA_HIBERNATE_DDL_AUTO: update

ืคื•ืจื˜ื™ื

  • Frontend & JPA Service: http://localhost:8082
  • Security Service: http://localhost:8081
  • PostgreSQL Database: localhost:5432

๐ŸŽฏ ืคื™ืฆ'ืจื™ื ืขื™ืงืจื™ื™ื

โœ… ื ื™ื”ื•ืœ ืžื•ืฆืจื™ื

  • ื”ืฆื’ืช ื›ืœ ื”ืžื•ืฆืจื™ื
  • ื”ื•ืกืคืช ืžื•ืฆืจ ื—ื“ืฉ
  • ืžื—ื™ืงืช ืžื•ืฆืจ ืกืคืฆื™ืคื™
  • ืžื—ื™ืงืช ื›ืœ ื”ืžื•ืฆืจื™ื
  • ืžืžืฉืง ืื“ืžื™ืŸ ืื™ื ื˜ื•ืื™ื˜ื™ื‘ื™

โœ… ื ื™ื”ื•ืœ ืžืฉืชืžืฉื™ื

  • ืจื™ืฉื•ื ืžืฉืชืžืฉื™ื ื—ื“ืฉื™ื
  • ื”ืชื—ื‘ืจื•ืช ืœืžืขืจื›ืช
  • ืื—ืกื•ืŸ ื‘ื˜ื•ื— ื‘ืžืกื“ ื ืชื•ื ื™ื

โœ… ืื‘ื˜ื—ื”

  • ืฉื™ืจื•ืช ืื‘ื˜ื—ื” ื ืคืจื“
  • JWT Token support
  • Spring Security integration

โœ… ืžืžืฉืง ืžืฉืชืžืฉ

  • ืขื™ืฆื•ื‘ ืจืกืคื•ื ืกื™ื‘ื™
  • ืชืžื™ื›ื” ื‘ืขื‘ืจื™ืช (RTL)
  • ืžืžืฉืง ืื“ืžื™ืŸ ืžืชืงื“ื
  • ื”ื•ื“ืขื•ืช ืžืฉืชืžืฉ ื‘ืจื•ืจื•ืช

๐Ÿ”ง ืคื™ืชื•ื— ื•ืชื—ื–ื•ืงื”

ื”ืคืขืœื” ื‘ืžืฆื‘ ืคื™ืชื•ื—

# ื”ืคืขืœืช ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืœื‘ื“
docker-compose up postgres-db

# ื”ืคืขืœืช ื”ืฉื™ืจื•ืชื™ื ื‘-IDE
# JPA Service: port 8082
# Security Service: port 8081

ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช ื”ืžืขืจื›ืช

# ื‘ื“ื™ืงืช JPA Service
curl http://localhost:8082/products

# ื‘ื“ื™ืงืช ืงื™ืฉื•ืจื™ื•ืช ืœืžืกื“ ื”ื ืชื•ื ื™ื
docker-compose exec postgres-db psql -U postgres -d app_db -c "SELECT 1;"

๐Ÿ“Š ื ื™ื˜ื•ืจ ื•ื‘ื™ืฆื•ืขื™ื

Logging

ื”ืžืขืจื›ืช ื›ื•ืœืœืช Aspect-Oriented Programming ืœื ื™ื˜ื•ืจ:

  • ืœื•ื’ื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ืœื›ืœ ืงืจื™ืื•ืช API
  • ืžืขืงื‘ ืื—ืจ ื‘ื™ืฆื•ืขื™ื
  • ื“ื™ื•ื•ื— ืขืœ ืฉื’ื™ืื•ืช

Metrics

  • ืžืขืงื‘ ืื—ืจ ื–ืžื ื™ ืชื’ื•ื‘ื”
  • ื ื™ื˜ื•ืจ ืฉื™ืžื•ืฉ ื‘ืžืฉืื‘ื™ื
  • ืœื•ื’ื™ื ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื

๐Ÿค ืชืจื•ืžื” ืœืคืจื•ื™ืงื˜

  1. Fork ืืช ื”ืคืจื•ื™ืงื˜
  2. ืฆื•ืจ branch ื—ื“ืฉ (git checkout -b feature/amazing-feature)
  3. Commit ื”ืฉื™ื ื•ื™ื™ื (git commit -m 'Add amazing feature')
  4. Push ืœ-branch (git push origin feature/amazing-feature)
  5. ืคืชื— Pull Request

๐Ÿ“ ืจื™ืฉื™ื•ืŸ

ื”ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT. ืจืื” ืงื•ื‘ืฅ LICENSE ืœืคืจื˜ื™ื ื ื•ืกืคื™ื.

๐Ÿ‘จโ€๐Ÿ’ป ืžืคืชื—ื™ื

  • ืฉื ื”ืžืคืชื— - ืคื™ืชื•ื— ืžืœื ืฉืœ ื”ืžืขืจื›ืช

๐Ÿ“ž ื™ืฆื™ืจืช ืงืฉืจ


๐Ÿš€ ืคืจื•ื™ืงื˜ ื’ืžืจ ื‘ืงื•ืจืก Java Advanced - Spring Boot Microservices

Made with โค๏ธ using Spring Boot & Docker

About

Scalable Microservice platform featuring Security Gateway and JPA data management

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages