Enterprise-grade banking API with JWT authentication, role-based access control, and transaction management
@RestController
@RequestMapping("/api/v1/accounts")
@RequiredArgsConstructor
public class AccountController {
private final AccountService accountService;
@PostMapping
@PreAuthorize("hasRole('USER')")
public ResponseEntity<AccountResponse> createAccount(
@RequestParam BigDecimal initialBalance) {
return ResponseEntity.ok(
accountService.createAccount(initialBalance));
}
@PostMapping("/{id}/transfer")
public ResponseEntity<TransferResponse> transferFunds(
@PathVariable Long id,
@RequestParam Long toAccountId,
@RequestParam BigDecimal amount) {
return ResponseEntity.ok(
accountService.transfer(id, toAccountId, amount));
}
}