The banking application is a Java-based project developed using the Spring Framework to provide various functionalities related to account management, customer interactions, messaging, and currency conversion. It leverages Spring Boot for simplified setup and configuration.
bank
├── bank.domain
│ ├── Account.java
│ ├── AccountEntry.java
│ └── Customer.java
├── bank.dao
│ ├── IAccountDAO.java
│ └── IAccountChangeEventDAO.java
├── bank.service
│ ├── AccountService.java
│ ├── BankStatementPrinter.java
│ ├── CurrencyConverter.java
│ ├── CustomerAdapter.java
│ ├── EventEmailer.java
│ ├── EventPersistenceSaver.java
│ ├── IAccountService.java
│ └── ICurrencyConverter.java
├── bank.integration
│ ├── email
│ │ └── EmailSender.java
│ └── jms
│ ├── JMSSender.java
│ └── IJMSSender.java
├── bank.logging
│ ├── ILogger.java
│ └── Logger.java
├── bank.web
│ ├── AccountController.java
│ └── Accounts.java
├── bank.aop
│ ├── DaoLoggingAdvice.java
│ ├── JmsLoggingAdvice.java
│ └── ServiceTimerAdvice.java
├── bank.messaging
│ ├── AccountInstruction.java
│ └── AccountListener.java
├── bank.service.messaging
│ ├── EventEmailer.java
│ └── EventPersistenceSaver.java
└── Application.java
The banking application offers the following key functionalities:
-
Account Management:
- Creation, retrieval, and listing of accounts.
- Operations for deposits, withdrawals, and fund transfers.
- Currency conversion capabilities.
-
Customer Interaction:
- Creation and retrieval of customer information.
-
Messaging:
- Sending email notifications for account events.
- Receiving and processing messages from Kafka.
-
Logging and Monitoring:
- Logging of method calls, JMS messages, and account change events for monitoring purposes.
- Programming Language: Java
- Frameworks: Spring Boot, Spring Data JPA, Spring Web MVC
- Messaging: JMS, Apache Kafka
- ORM: Hibernate
- Database: MySQL
- Build Tool: Maven
- Data Formats: JSON
- Logging: Log4j
- Testing: JUnit