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:
Anything else?
(It doesn't have to be necessarily Spring's proxy based AOP - rather JBoss AOP.)
I can give you two examples where we use it:
Automatically registering objects in JMX for remote management. If a class is annotated with our @AutoRegister
annotation, we have an aspect that watches for new instantiations of that class and registers them in JMX automatically.
Audit logging (the gold standard AOP use case). Its a bit coarse but the general approach is to annotate methods that represent some auditable action. Combined with something like Spring Security, we can get a pretty good idea of: