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:
- who the user is
- what method they’re invoking
- what data they’re providing
- what time the method was invoked
- whether the invocation was successful or not (i.e., if an exception was thrown)