springAOP - juedaiyuer/researchNote GitHub Wiki

#AOP#

Aspect Oriented Programming的缩写,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术

主要功能:日志记录,性能统计,安全控制,事务处理,异常处理

实现方式

预编译

AspectJ

运行期动态代理

JDK动态代理,CGLib动态代理

SpringAOP,JbossAOP

Spring的AOP实现

  1. 纯java实现,无需特殊的编译过程,不需要控制类加载器层次
  2. 目前只支持方法执行连接点(通知Spring bean的方法执行)
  3. 不是为了提供最完整的AOP实现,而是侧重于提供一种AOP实现和Spring Ioc容器之间的整合,用于解决企业应用中的常用问题
  4. Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方案

有接口和无接口的Spring AOP实现区别

  1. Spring AOP默认使用标准的JavaSE动态代理作为AOP代理,这使得任何接口都可以被代理
  2. Spring AOP中也可以使用CGLIB代理

Schema-based AOP

Spring所有的切面和通知器都必须放在一个aop:config内

可以配置包含多个aop:config元素

每一个aop:config可以包含pointcut,advisor,aspect元素

⚠️ **GitHub.com Fallback** ⚠️