When you are working for a new application, it becomes important to work on standard best practices which are going to be reusable by all developers. Some of the aspects which can be considered as cross-cutting concerns are auditing, logging, security, transactions, versioning, etc. AOP is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding additional behaviour to existing code without modification of the code itself. Instead, we can declare this new code and these new behaviours separately. Spring’s AOP  framework helps us implement these cross-cutting concerns.