This chapter presents an overview of Aspect-Oriented Programming concepts, and explains their capabilities and features. Here is a brief outline of the topics covered in this chapter:
Limits of Object-Oriented Programming
The AOP solutions
Spring AOP components
Spring AOP 2.5
In this chapter we will see what the designing and realization process of an application or software system consists of.
We have to stop and think about the problems that we will see, beginning from the designing phase: how to structure the application, what are the problems in the implementation phase if we use only object-oriented programming, and in which forms they show themselves. We will also see how aspect-oriented programming can support object-oriented programming to solve problems in the implementation phase. We will finally see what Spring provides to allow us to use aspect-oriented programming with Inversion of Control (IoC).
If we use a method such as the Extreme Programming, we iteratively focus hard on the functionalities and improve them following the clients' feedback.
Therefore, who does what is described so that the functionalities that the system provides to the user are clear.
After having found these entities, we model them as classes that contain data and have behavior.
To do this, we use some features of the object-oriented languages, such as inheritance, polymorphism, encapsulation, and interfaces, to create a model that helps us solve the domain problem in the simplest way possible.
Drawing, structuring, and building software systems in this way is now considered a common practice. Nevertheless, there are some inefficiencies that emerge at the moment of realizing the project. In fact, however accurately the design may have been made with highly cohesive classes and low coupling, there are still some situations where we have to make compromises.