spring源码分析第五天------springAOP核心原理及源码分析
1、 面向切面编程。可以通过预 编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术
切面(Aspect)
连接点(Joinpoint)
通知(Advice)
切入点(Pointcut)
目标对象(Target Object)
AOP 代理(AOP Proxy)
2、通知(Advice)类型
前置通知
后置通知
返回后通知
环绕通知
3、execution(* com.spring.service..(…))表示 com.spring.service 包下,返回值为任意类型;方法名任意; 参数不作限制的所有方法
4、Spring 中主要的 AOP 组件
Spring 提 供 了 两 种 方 式 来 生 成 代 理 对 象 : JDKProxy 和 Cglib , 具 体 使 用 哪 种 方 式 生 成 由 AopProxyFactory 根据 AdvisedSupport 对象的配置来决定。默认的策略是如果目标类是接口,则使 用 JDK 动态代理技术,否则使用 Cglib 来生成代理。
代理对象如何织入
InvocationHandler 是 JDK 动态代理的核心,生成的代理对象的方法调用都会委托到 InvocationHandler.invoke()方法。而通过 JdkDynamicAopProxy 的签名我们可以看到这个类其实 也实现了 InvocationHandler
5、分布式系统的特性
在分布式系统中,同时满足 CAP 定律中的一致性 Consistency、可用性 Availability 和分区容错性 Partition Tolerance 三者是不可能的。在绝大多数的场景,都需要牺牲强一致性来换取系统的高可 用性,系统往往只需要保证最终一致性。
分布式事务服务(Distributed Transaction Service,DTS)是一个分布式事务框架,用来保障在 大规模分布式环境下事务的最终一致性。
CAP 理论告诉我们在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现 延迟丢包等问题,所以分区容忍性是我们必须需要实现的,所以我们只能在一致性和可用性之间进行权 衡。
数据一致性理解: 强一致性:当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。这种 是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。根据 CAP 理论,这种实现需 要牺牲可用性。
6、事务的基本概念
5.6、事务的嵌套