Spring has been the framework of choice to wire Java Enterprise applications during the last decade and half. Applications used a layered architecture with all cross-cutting concerns being managed using aspect-oriented programming. The following diagram shows a typical architecture for a web application developed with Spring:
![](https://static.packt-cdn.com/products/9781787123175/graphics/assets/14f46f15-3f3d-47c6-b9da-b8094b076498.png)
The typical layers in such an application are listed here. We will list cross-cutting concerns as a separate layer, though in reality, they are applicable across all layers:
- Web layer: This is typically responsible for controlling the web application flow (controller and/or Front Controller) and rendering the view.
- Business layer: This is where all your business logic is written. Most applications have transaction management starting from the business layer.
- Data layer: It is also responsible for talking...