2.3 KiB
2.3 KiB
proj-acquirex - Card Acquisition Approval System
Spring Boot 3 Migration
Migration Summary
| Component | Before (SB 2.x) | After (SB 3.x) |
|---|---|---|
| Java Version | 8/11 | 17 |
| EE Namespace | javax.* |
jakarta.* |
| Validation | javax.validation | jakarta.validation |
| Spring Boot | 2.7.x | 3.2.5 |
Migration Scope
- CardAcquisitionApprovalService: Core approval business logic
- CardAcquisitionApprovalController: REST API endpoint (
/api/v1/approvals) - ApprovalRequest/ApprovalResponse: DTOs with Jakarta Validation
- Domain entities: CardAcquisitionApproval, ApprovalStatus
Key Changes
- Package Migration: All
javax.*imports replaced withjakarta.* - Validation Annotations:
@NotNull,@NotBlank,@DecimalMinusejakarta.validation - Java 17 Features: Switch expressions, records-ready structure
Verification Procedures
# Build and test
mvn clean verify
# Run application
mvn spring-boot:run
# Test endpoint
curl -X POST http://localhost:8080/api/v1/approvals \
-H "Content-Type: application/json" \
-d '{"requestId":"REQ-001","cardNumber":"4111111111111111","merchantId":"MERCHANT-001","amount":100.00}'
Test Coverage (15 tests)
| Category | Tests | Description |
|---|---|---|
| Service: processApproval | 3 | Approval, pending, rejection logic |
| Service: validateRequest | 2 | Card number, merchant ID validation |
| Service: determineApprovalStatus | 3 | Status determination by amount |
| Service: maskCardNumber | 3 | Card number masking |
| Controller | 4 | HTTP 200/202/400 responses |
API Specification
POST /api/v1/approvals
Request:
{"requestId":"REQ-001","cardNumber":"4111111111111111","merchantId":"MERCHANT-001","amount":100.00}
Response (200 OK):
{"id":1,"requestId":"REQ-001","status":"APPROVED","amount":100.00,"processedAt":"...","message":"Card acquisition approved successfully"}
Dependencies
| Dependency | Version | Purpose |
|---|---|---|
| spring-boot-starter-web | 3.2.5 | REST API |
| spring-boot-starter-validation | 3.2.5 | Jakarta Validation |
| spring-boot-starter-test | 3.2.5 | JUnit 5, Mockito |
Build Status
- Java 17 required
- Spring Boot 3.2.5
- Jakarta EE 9+ compatible
- All 15 tests passing