什么是AOP
AOP是一种面向切面的编程思维,它是对面向对象(OOP)编程的一种补充和欠缺。它以通过预编译形式和运行期动静代理形式,实现在不批改源代码的状况下给程序动静对立增加额定性能的一种技术。
AOP和OOP时两种面向不同畛域的设计思维,面向对象是一种动态过程,而面向切面则是运行时代理机制,能够了解为一个动静过程。
AOP就是要基于OCP(开闭准则),在不扭转原有系统核心业务代码的根底上动静增加一些扩大性能并能够"管制"对象的执行。例如AOP利用于我的项目中的日志解决,事务处理,权限解决,缓存解决等等。
AOP原理剖析
- 如果指标对象(被代理对象)实现了接口,底层能够采纳JDK动静代理机制为指标对象创立代理对象(指标类和代理类会实现独特接口)
- 如果指标对象(被代理对象)没有实现接口,底层则采纳CGLIB动静代理机制为指标对象创立代理对象
- aop:proxy-target-class: false
//false示意为指标对象基于JDK形式产生代理对象,默认为true为CGLIB动静代理
原理图如下:
Spring AOP相干属于简介
- 切面(aspect): 横切面对象,个别为一个具体类对象(能够借助@Aspect申明)
- 告诉(Advice):在切面的某个特定连接点上执行的动作(扩大性能),有Around,Before,After,AfterReturning,AfterThrowing
- 连接点(joinpoint):程序执行过程中某个特定的点,个别指向被拦挡到的指标办法。
- 切入点(pointcut):对多个连接点(Joinpoint)一种定义,个别能够了解为多个连接点的汇合
Spring AOP的疾速实际
- 导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>