⾯试题--对于SpringAop原理的理解
这段时间对于Spring中的Aop原理做了⼀些了解,整理了⼀下⼤概分为以下⼏点,aop是什么以及aop实现原理,aop中常⽤的术语以及代理⽅式等等:spring aop应用场景
1.什么是 aop?
1. aop是⾯向切⾯编程,不同于java原始的oop是⾯向对象编程,使⽤aop可以实现不需要修改原功能代码,只需要修改⼀下配置,即可
实现功能的扩展
2. aop采⽤的是横向抽取机制,取代了传统的纵向继承体系,减少了重复性代码
3. 运⾏期间通过代理⽅式向⽬标类植⼊增强代码
4. 经典的应⽤场景有事务的管理,安全检查,缓存,性能监控等等
2.aop的实现原理?
1. aop底层是采⽤动态代理机制实现的:接⼝+实现类
2. 接⼝:spring采⽤jdk的动态代理proxy
3. 实现类:spring采⽤cglib实现字节码增强
4. 就是由代理创建出⼀个和impl实现类平级的⼀个对象,但是这个对象不是⼀个真正的对象,只是⼀个代理对象,但它可以实现和impl
相同的功能,这个就是aop的横向机制原理,这样就不需要修改源代码
3.aop中常⽤的术语?
1. target:⽬标类,需要被代理的类,如service
2. joinpoint:连接点,指那些可能被拦截的⽅法,如⽬标类的所有⽅法
3. pointCut:切⼊点,已经被增强的连接点,如addUser()
4. advice:增强/通知,增强代码,如before()/after()
5. weaving:织⼊,把增强应⽤到⽬标类⽽创建出代理对象的这⼀过程
6. proxy:代理,⽬标类被织⼊增强后就产⽣⼀个代理类
7. aspect:切⾯,切⼊点和增强的结合
(还有些aop偏底层的内容,如代理⽅式等会继续更新,也可留⾔交流)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论