I\'d like to make a picture of what are the possible cases for effective involvement of AOP in application design. All I have met so far is:
Method level caching,if your method is stateless(I mean returns same value when invoked repeatedly with same parameter values). This is more effective in case of DAO methods because it avoids database hit.
I will also recommend aspects for:
With Spring and tcServer (developer), you can easily monitor all your Spring beans with @Component annotation. You can see time used, the input and return data including exceptions.
To see the coverage of AOP in terms of applicability I really recommend you to read the book Aspect-Oriented-Software-Development-Use-Cases. This book elaborates use cases of functional and non-functional requirements using AOP. After that you will see that aspects can be used to more requirements than logging, tracing, security, etc.
We use AspectJ to accomplish AOP. Use cases apart from the above mentioned ones are as follows: