AOP(Aspect Oriented Programing) 面向切面编程
AOP 采取横向抽取的机制 取代了传统的纵向集成体系 重复性代码(性能监视 事务管理 安全检查 缓存)
JoinPoint 连接点 被拦截的点 (spring中只支持方法类型的连接点)
PointCut 切入点 切入点就是指我们 对那些 JoinPoint进行拦截的定义
Advice 通知/增强 拦截到切点 之后要做的事情 可分为 前置通知 后置通知 异常通知 最终通知 环绕通知(切面)
Introduction 引介 一种特殊的通知 在不修改类代码的前提下 在运行期为类动态的添加方法和属性
Target 目标对象 代理的目标对象
Weaving 织入 把增强应用到目标对象来创建新的代理对象的过程
Aspect 切面 切入点与通知(引介)的结合
底层原理 动态代理(对实现了接口的 类生成代理)
JDK动态代理 对实现了接口的类生成代理
CGLib动态代理 对类生成代理
Spring框架 如果该类实现了接口 就使用JDK动态代理生成代理对象 如果这个类没有实现接口 就使用CGLIB生成代理对象
在Spring中的通知(增强代码)
前置通知 在目标方法执行前实施增强
后置通知 在目标方法执行后实施增强
环绕通知 在目标方法执行前后实施增强
异常抛出通知 在方法抛出异常后实施增强
引介通知 在目标类中添加一些新的方法和属性
Spring中的切面类型
传统切面 Advisor 切点和通知组合
Aspect 多个切点和多个通知组合
Spring中的AspectJ的AOP 两种形式 基于注解 基于XML
Spring的JDBC Template
对持久层的支持 JDBC Hibernate MyBatis JPA
连接池 dataSource (默认) DBCP C3P0