T1: Spring AOP
Spring的核心就是面向切面编程,面向切面编程是通过动态代理实现,AOP最典型实现就是拦截器。
AOP有几个概念:
1.切面:从业务逻辑中,分离出来的横切逻辑,如:日志,监控;
2.切点:匹配目标连接类的条件;
3.增强(advice):具体切入目标类的类;
4.连接点:应用程序中允许切面切入的点;
5.目标:目标方法(JDK代理)或目标类(CGLIB代理)
6.代理:JDK代理,CGLIB代理。或是通过 ProxyFactory 类生产。
切点/连接点/增强的关系:
增强总是在连接点处执行,而切点决定了是哪一个连接点。point cut 是一个描述信息, 它修饰的是 join point, 通过 point cut, 我们就可以确定哪些 join point 可以被织入 Advice.
代理类=原来的类+增强的类
对于增强来说,有多种,分为两大类:
一.对方法的增强:
1.前置
2.后置
3.环绕
4.返回:在方法返回结果后执行,该增强可以接收到目标方法返回结果。
5.抛出
二.对类的增强:
引入增强:动态实现某个增强。
T2: Spring IoC and DI
控制反转和依赖注入其实是一个概念,一种编程思想:一段程序中,会有很多依赖的对象和数据,通过xml配置以反射的原理将对象动态的生成,以此解偶,对象的生成只需要通过配置交给Spring容器管理。