AOP總結

面向切面编程,把散落在程序中的公共部分提取出来,做成切面类,这样的好处在于,代码的可重用,一旦涉及到该功能的需求发生变化,只要修改该代码就行,否则,你要到处修改,如果只要修改1、2处那还可以接受,万一有1000处呢。
AOP底层的东西就是JDK动态代理和CGLIB代理,说白了就是增强类的功能。
最常用的AOP应用在数据库连接以及事务处理上。如spring的声明式事务。
原理:反射机制
常用模式:代理模式,工厂模式
AOP通知的类型有:前通知,后通知,环绕通知,异常通知。
触法点,也就是我们对应相应的业务写的方法,这些方法需要开启和关闭事务,我们把需要处理的方法叫做触法点。
代理有很多,据说是5中,但常用的只是jdk 的动态代理和CGLIB代理
jdk的代理分为静态代理和动态代理,静态代理用的很少,一般都是动态代理,

CGLIB代理是生成的目标类的子类,所以类和方法不能声明为final的,要不然就会有问题
jdk的代理是必须要实现接口的,而CGLIB不是,但必须要引入jar包,spring中默认使用jdk 的动态代理(实现接口了),除强制设置CGLIB的代理

常用两种代理模式:
JDK动态Proxy用于对接口的代理,是动态产生一个实现指定接口的类。被代理的类必须实现制定的接口。
CGLIB用于对类的代理,是动态产生一个继承被代理类的类。对于没有继承接口的类,通过继承运用其子类来实现。

你可能感兴趣的:(spring,AOP,jdk,编程)