对aop一些知识的总结,好多图也是找过来的,希望是大家更容易记住更多知识点。
java代理对象作用,例如:实现真实对象的功能,还在真实对象的基础上添加了新的功能,保证真实对象没有被修改 。AOP编程本质上使用的就是代理模式,对现有类的功能进行增强。
AOP真正目的是:你写代码的时候,只需考虑主流程,而不用考虑那些不重要的,但又必须要写的其它公共代码。这些其它的公共代码就是切面类。
AOP中类与切面的关系
AOP的本质是在一系列纵向的控制流程中,把那些相同的子流程(验证用户)提取成一个横向的面。将分散在主流程中的公共代码提取出来,然后在程序编译或运行时,将这些提取出来的切面代码应用到需要执行的地方。
如:通过切面可以分别在类1和类2方法中加入了事务,日志,权限控制等功能
AOP的好处,使开发人员在编写业务逻辑时可以专心于核心业务,而不用过多地关注于其他不重要的代码实现,提高了开发效率,增强了代码的可维护性。
AOP术语
- Aspect(切面):是指封装的用于横向插入的功能(如:事务,日志等)的类。
- JoinPoint(连接点):在程序执行过程中的某个阶段点,连接点就是指主业务方法的调用。
- Pointcut(切入点):切面与程序流程的交叉点。在程序中,切入点指的是类或者方法名,满足某一规则的方法都是切入点,后面会学习切入点表达式来制定规则。
- Advice(通知):切入点处所要执行的程序代码,即切面类中要执行的公共方法。
Spring的事务管理的方式和常用接口
-
方式:
- 声明式事务
- 注解式事务(注解的声明式事务)
- 编程式事务
-
常用接口
PlatformTransactionManager:事务管理器接口
TransactionDefinition:事务定义对象
TransactionStatus:事务状态对象
标签名 | 作用 | 属性 |
---|---|---|
<aop:config> | aop配置 | |
<aop:pointcut> | 配置切入点表达式 | |
<aop:aspect> | 配置切面 | |
<aop:before> | 前置通知 | method:切面类中方法名 pointcut:切入点表达式 pointcut-ref:引用其它切入点表达式 |
<aop:after-returning> | 后置通知 | |
<aop:after-throwing> | 异常通知 | |
<aop:after> | 最终通知 | |
<aop:around> | 环绕通知 |
说说下面AOP有关的注解的作用
注解 | 说明 |
---|---|
@Aspect | 指定当前类是切面类 |
@Pointcut | 放在方法上,指定切入点表达式 |
@Around | 环绕通知 |
ProceedingJointPoint接口中的方法
方法名 | 功能 |
---|---|
getArgs() | 得到方法参数 |
getTarget() | 得到代理的目标对象 |
getSignature() | 得到方法的信息 |
proceed() | 调用目标方法 |