共计 816 个字符,预计需要花费 3 分钟才能阅读完成。
什么是 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>
正文完