Spring中AOP的理解

啥是aop?专业术语来说,就是面向切面编程。

概念原理:在一些应用场景中,一些公共的功能或者问题,通过动态代理的方式

进行提取,抽离,使得这些公共的功能与其他步骤之间隔离。

好处:就是因为公共部分的代码功能都与其他步骤隔离了,那么程序

之间的耦合性该有多低,多好呀,维护起来,还不笑嘻嘻。

并且抽离公共部分,搁好多地方都能用,是不是少写很多代码。还不美滋滋。

其中Spring aop原理是:Spring用代理类包裹切面(切点<一般指方法前后> 与 通知<方法前后要增加的内容>)

把他织入到Spring管理的bean中。伪装成目标类,当调用目标类方法时,会被伪装类截取,先执行通知内容,再调用

目标类方法。

伪装类伪装成目标类没有被jvm发现?怎么实现呢?jvm可是强类型的,很严的

两种实现方式:实现父接口:如果目标类实现了接口,那么,我们伪装类就可以也实现这个接口,这个时候

                        调用者调用目标类的时候,被伪装类拦截,传递给他一个(父接口引用 其实指向伪装类对象)

                        那么就可以通过jvm虚拟机检查了,多态的运用嘛 。

                        举个例子:别人让哥哥干某个工作,哥哥会干,你不会。但是你们是兄弟俩,你站出来了

                        对方就分不清谁是哥哥弟弟,同一个老爸(接口),你站出来了,他就把工作交给你了,并且还

                        收礼物(切面),你不会干,你收完礼物就把工作交给哥哥了。哥哥不知道你收礼物,只专心

                        工作。

                       继承目标类:如果目标类没有实现接口,而是继承了类,那么伪装类继承目标类,这个时候调用者

                        调用目标类的时候,被伪装类拦截,伪装类是实现了目标类,所以他具有目标类的功能,并且可以通过

                        jvm虚拟机检查,那么他在执行了通知,之后他会自己把工作做完。没目标类的事。

                        举个例子:别人让老爸工作,儿子继承了老爸,也有工作的能力,当来工作了,儿子站出来,拦截了工作,

                        收了礼物,自己把工作做了,老爸啥事没有,啥也不知道。

                        

那些地方用到呢?权限,缓存,内容传递,错误处理,懒加载,调试

记录跟踪优化校准,性能优化,持久化,资源池,同步,事务。参考别人的

你可能感兴趣的:(spring框架)