AOP stands for Aspect Oriented Programming. For details see AOP. Spring AOP is based on dynamic AOP. Spring provides the AOP feature by using proxies at runtime. Also Spring is limited to method execution joinpoint. What it means is that Spring only provides AOP feature on method execution.
Spring supports proxy creation either by using JDK dynamic proxy or using cglib proxy. The default is JDK dynamic proxy. The proxy is based on the interface that the target class implements. For a method to be advised the interface should also have the method in it. If the class do not implements any interface than Spring resorts to cglib based proxy mechanism. In this the class definition is
modified by extending the target class at runtime. However if the class is final Spring cannot apply AOP on that class.
modified by extending the target class at runtime. However if the class is final Spring cannot apply AOP on that class.
Spring has the following way of supporting AOP:
- Spring Programmatic AOP Support
- Spring Annotation driven Aspects
- Spring POJO Aspects
- Spring AspectJ Injected Aspects
- Before advice: Advice that executes before a join point, but which does not have the ability to prevent execution flow proceeding to the join point (unless it throws an exception).
- After returning advice: Advice to be executed after a join point completes normally: for example, if a method returns without throwing an exception.
- After throwing advice: Advice to be executed if a method exits by throwing an exception.
- After (finally) advice: Advice to be executed regardless of the means by which a join point exits (normal or exceptional return).
- Around advice: Advice that surrounds a join point such as a method invocation. This is the most powerful kind of advice. *Around advice can perform custom behavior before and after the method invocation. It is also responsible for choosing whether to proceed to the join point or to shortcut the advised method execution by returning its own return value or throwing an exception.
No comments:
Post a Comment