大家好,欢迎来到IT知识分享网。
大学毕业去实习的时候,去广州易迅面试实习生,过了第一轮,第二轮的时候,前面一些问题都回答额挺好的后来问我AOP原理,我简单介绍了一下AOP,然后说动态代理,当时刚毕业也不知道,于是乱说然后就GG了。今天梳理,希望能给大家一些帮助
AOP:aspect oriented programming,面向切面编程,它可以扩展功能但是不修改程序源码实现,采取的是横向抽取机制,取代传统纵向继承体系重复性代码。简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。
主要功能:对象池管理,日志记录,性能统计,访问安全控制,事务处理,异常处理等等。
AOP实现的原理:
首先就得说一下代理模式:
它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理:在程序运行时,运用反射机制动态创建而成。
下面大家看一下AOP的操作术语:这是以前学AOP的笔记,你们将就瞄一眼就好了。
静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。具体操作的话百度一下,网上很多详细的介绍。
学习终归靠自己,天道酬勤,希望大家都能努力。每天发表一篇JAVA技术类文章,希望大家留言让我知道大家需要什么样的文章。。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/54986.html