To start off with my new (Enterprise) Java Development Blog here on StSMedia.net I would like to gradually develop a sample application which demonstrates various aspects of the Spring framework and some of its related projects and products.
[Disclaimer: I am currently employed as a Systems Engineer with SpringSource, the company behind the Spring framework. However, the article series I am planning to publish here on my private Web site is not sponsored by my employer and contains solely my own ideas and code.]
To my sample application:
Spring Finance is designed to be a simple finance tracker application for the Simpsons family. As some of you might know the Simpsons frequently have financial trouble of all sorts. They borrow money from their neighbour, the Ned Flanders, the local power plant owner, Mr Burns, and others. However, Homer tends to forget or miss his loan repayments. This is where the Spring Finance application comes into play.
The domain of the Spring Finance application should follow the priciples of Domain Driven Design. The following statement provides a high level vision of the problem domain as explained in Eric Evan’s book entitled Domain Driven Design on page 415:
The Domain Vision Statement
The Spring Finance application is to be used by three groups, bank account managers, bank clients and the general public. The domain model should reflect processes necessary for bank account managers to capture the essentials of financial transactions between the different parties involved. The model can represent stakeholders, accounts, financial transactions and financial products. However, the model does not include the management of more complex concepts such as compounded interests and is not meant to an in-depth representation of all possible financial constructs. Instead it should capture a minimal design to allow for the following requirements to be fulfilled:
- Financial products offered in the system should be visible to the general public (product listings, and product details)
- Bank managers can create, read, update and delete (CRUD) all financial products, financial transactions, accounts and stakeholders (people)
- Financial products should initially include Loans, Cash Accounts, and Managed Funds
- Customers can read data from their accounts when logged in
- [more detailed requirements will be discussed in the relevant articles that follow]
Initial Domain Diagram
Here is a relatively high level class diagram which puts the above mentioned requirements into an initial design.
I should mention that I am also a trained banker and have learned some of these concepts about 10 years ago, however, I have not worked in this business since then and may be a little rusty in understanding the banking domain. While my wife, a financial planner, has helped me a little to refine the design, I am open to any comments from more seasoned ‘domain experts’ on how this can be improved.
As stated above, the main purpose of the Spring Finance application is to demonstrate the development of a Enterprise Java application using the Spring framework and some of the projects under its umbrella. The intention is to demonstrate how some of the latest features are applied in a real world context.
So far my list of technologies I intend to incorporate over the course of this article series includes:
- Spring 3.0
- – new REST features
- – new Expression Language (EL) features
- – Annotation based MVC controllers (available since Spring 2.5)
- Spring Security
- Spring Web Flow
- Spring AOP & AspectJ
- Spring dm & SpringSource dm Server
- Spring Integration *
- Spring Web Services *
- Spring & Esper *
- Spring Finance in the cloud *
* (not decided yet, depending on the use case for it)
So, stay tuned for my first article on Spring 3, REST, EL and MVC. I am planning to make the source code of the Spring Finance sample application available in a publicly readable SVN repository.