Paul,
A crosscutting concern is a requirement, design, or implementation that spread over multiple modules. There are many examples of such concern: logging, tracing, dynamic profiling, service-level agreement, policy enforcement, pooling, caching, concurrency control, security, transaction management, business rules, and so forth.
A traditional implementation of a crosscutting concern causes its code to be tangled with the module�s core concern. For example, the Account class in a banking system may contain some code to perform logging, concurrency control, transaction management, authorization and so forth. Further the same concerns are addressed by multiple modules. For example, you can expect the Customer class to address the same crosscutting concerns. This is called code scattering.
The objective of aspect-oriented programming (and therefore AspectJ) is to modularize such concerns. Instead of embedding crosscutting logic into the core classes, you implement a new
unit of modularity called �aspect�. Look at logging example in
https://coderanch.com/t/91659/java/week-book-give-away You can also look at example in chapter 10 of AspectJ in Action (available for free download. See URL in my signature).
-Ramnivas