本文共 1916 字,大约阅读时间需要 6 分钟。
AOP (Aspect-Oriented Programming)是一种特殊的编程结构,是对目前流行的OOP (Object-Oriented Programming)的一种补充。
相对于大家熟悉的OOP (Object-Oriented Programming),OOP的模块单元是class,而AOP的模块单元是aspect。
Spring框架中使用AOP主要是取代EJB中的各种声明式服务,如异常处理、事务管理、日志、安全性等。 Spring框架提供了两种实现AOP的方式:对于一个join point处有多个advice要执行时,情况如下:
4. pointcut是“方法名+描述join point的表达式”,定义遇到什么样的join point就会执行哪个advice。
在匹配pointcut描述的任何join point处执行advice。 Spring AOP当前(4.0)只支持定义方法的时候指定pointcut,这样的方法返回值只能是void,而且必须是public的(受代理拦截机制的限制)。 execution/this/target/args/within/@target/@args/@within/@annotation &&, ||, !组合多个pointcut描述 5. introduction(即AspectJ中的inter-type declaration)是通过@DeclareParents声明类实现指定接口。 在aspect中声明的各个advice方法,可以引用任何实现了指定接口的实现类。 @DeclareParents(value="com.xzy.myapp.service.*+", defaultImpl=DefaultUsageTracked.class)6. target object(advised object)是插入aspect时执行的advice所作用的对象。
每个target object都要创建代理。
7. AOP proxy,AOP框架创建的对象,用以实现aspect。
8. weaving是连接aspect与其他应用类型或对象以创建target object的过程。
转载地址:http://cjlai.baihongyu.com/