在Java教程中大家会学到AOP,AoP:面向切面编程,对业务逻辑的各个部分进行隔离,使得业务逻辑的各个部分之间的耦合度降低。
通俗来讲:不修改源码的方式,在主干功能里添加新功能。
有两种动态代理情况:
(1)有接口,使用JDK动态代理
创建接口实现类的代理对象,增强类的方法
(2)没有接口情况,使用CGLIB动态代理
创建子类的代理对象,增强类的方法
JDK的动态代理:使用Proxy类的方法newProxyInstance方法来创建代理对象
第一个参数:类加载器;
第二个参数:增强方法所在的类所实现的接口,支持多个接口
第三个参数:实现InvocationHandler接口,创建代理对象,写增强的方法
代码实现:
spring5对动态代理做了封装
(1)连接点:可以被增强的方法
(2)切入点:实际被增强的方法
(3)通知(增强):实际增强的逻辑部分
通知的类型:
前置通知
后置通知(有异常就不执行)
环绕通知
异常通知
最终通知(有异常仍然执行)
(4)切面:是动作,把通知应用到切入点过程
(把增强的逻辑部分应用到需要被增强的方法处)
Spring 框架一般是基于ASpectJ实现AoP操作
ASpectJ不是Spring的组成部分,是独立的AoP框架,一般把AspectJ和Spring框架一起使用,进行AoP操作
基于ASpectJ实现AoP操作的方式:
(1)基于xml配置文件方式
(2)基于注解方式
切入点表达式:
切入点:实际被增强的方法
切入点表达式的作用:用来知道是对哪个类的哪个方法进行增强
以上就是关于“一文读懂AOP面向切面编程”的介绍,大家如果想了解更多相关知识,不妨来关注一下本站的Spring框架教程,里面还有更丰富的知识等着大家去学习,希望对大家能够有所帮助哦。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习