aop的底层是动态代理机制:在不改变原代码的基础上增加新的功能
Spring aop 简化了的动态代理
1.创建动态代理对象(参数1.类加载器 2.接口的字节码对象 3.InvocationHandler)
Spring aop的重要概念:
连接点:save update find这些方法
切入点:对(save)具体方法进行增强
通知(前置/后置/环绕/异常/最终通知):具体的增强手段,要知道需要在哪里增强
环绕通知:在目标方法执行前后
后置after-returning通知,在目标方法执行后,报错不执行。
最终after通知:在目标方法执行后,报错也执行。
目标对象:orderDaoImpl 对它加入自动代理
切面:切入点+通知
代理:新的动态代理对象
aop配置标签:<aop:config>切入点的配置
<aop:aspect>切面配置
Spring申明式事物
模拟银行转账 数据库要求同时成功或者同时失败
事物的隔离级别:主要用于防止
脏读:事物A读取了事物B没有提交的数据 不可重复读 虚读
1-8 级别越高隔离越严 默认情况下是4
事物的传播行为:用来控制事物同时成功和分别成功的方法
1.申明式事物管理器 需要一个datasource对象
2.需要一个aop标签来配置事物的隔离级别和传播行为(背标签)
datasource:数据库连接池
1.我们需要一个事物管理器(不同框架事物管理器对象不同)->需要一个bean来得到管理器对象,而管理器需要一个datasource
2.把事物管理器和传播行为progration、隔离级别isolation关联起来->通过tx:advice来配置事物的隔离级别和传播行为,标签有个id
<tx:attributes>
对谁添加事务管理 name
传播行为progration(可以默认不写)
隔离级别isolation
3.通过aop标签来配置切面来完成切入点和事物的绑定