您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

面试官经常问AOP,那到底啥是AOP?

时间:2020-12-17 11:35:40  来源:  作者:

1. 定义

AOP意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

我的理解是纵向关系是OOP,横向角度是 AOP。

面试官经常问AOP,那到底啥是AOP?

 

2.OOP 与 AOP 的区别

  1. 面向目标不同:简单来说 OOP 是面向名词领域,AOP 面向动词领域。
  2. 思想结构不同:OOP 是纵向结构,AOP 是横向结构。
  3. 注重方面不同:OOP 注重业务逻辑单元的划分,AOP 偏重业务处理过程中的某个步骤或阶段。

3.OOP 与 AOP 的联系

两者之间是一个相互补充和完善的关系。

4. 关于AOP的几个术语

1)aspect(切面):实现了cross-cutting功能,是针对切面的模块。最常见的是logging模块,这样,程序按功能被分为好几层,如果按传统的继承的话,商业模型继承日志模块的话根本没有什么意义,而通过创建一个logging切面就可以使用AOP来实现相同的功能了。

2)jointpoint(连接点):连接点是切面插入应用程序的地方,该点能被方法调用,而且也会被抛出意外。连接点是应用程序提供给切面插入的地方,可以添加新的方法。比如以上我们的切点可以认为是findInfo(String)方法。

3)advice(处理逻辑):advice是我们切面功能的实现,它通知程序新的行为。如在logging里,logging advice包括logging的实现代码,比如像写日志到一个文件中。advice在jointpoint处插入到应用程序中。以上我们在MyHandler.JAVA中实现了advice的功能

4)pointcut(切点):pointcut可以控制你把哪些advice应用于jointpoint上去。决定了那个jointpoint会获得通知。

5)introduction:允许添加新的方法和属性到类中。

6)target(目标类):是指那些将使用advice的类,一般是指独立的那些商务模型。比如以上的StudentInfoServiceImpl.

7) proxy(代理类):使用了proxy的模式。是指应用了advice的对象,看起来和target对象很相似。

8)weaving(插入):是指应用aspects到一个target对象创建proxy对象的过程:complie time,classload time,runtime

5. 实现

AOP的实现主要是依赖代理模式,可以使用aspectj静态代理,cglib动态代理,jdk动态代理等实现。具体可参照https://blog.csdn.net/qq_42072311/article/details/80320731

6. 主要功能

日志记录,性能统计,安全控制,事务处理,异常处理等等。



Tags:AOP   点击:()  评论:()
声明:本站部分内容来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
1. 定义AOP意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度...【详细内容】
2020-12-17   AOP  点击:(0)  评论:(0)  加入收藏
一 日志记录表日志记录表主要包含几个字段,业务模块,操作类型,接口地址,处理状态,错误信息以及操作时间。数据库设计如下:CREATE TABLE `sys_oper_log` ( `id` bigint(20) NOT...【详细内容】
2020-10-19   AOP  点击:(5)  评论:(0)  加入收藏
概念AOP是“面向方面编程”,要解决的问题是,把重复性的横切逻辑独立出来,然后融合到业务逻辑中,达到和原来一样的业务流程;AOP的工作重心在于如何将增强应用于目标对象的连接点上...【详细内容】
2020-10-13   AOP  点击:(28)  评论:(0)  加入收藏
一、为什么需要面向切面编程?面向对象编程(OOP)的好处是显而易见的,缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候,例如日志记录、性能监控等,如果...【详细内容】
2020-09-27   AOP  点击:(11)  评论:(0)  加入收藏
1创建一个SpringBoot项目2在项目里定义一个接口,放在com.cy.pj.mail.service下,写一个方法。 写一个实现类取继承接口,想要定义一个日志处理,想要以AOP的方式注入。 3写一个测试...【详细内容】
2020-09-21   AOP  点击:(19)  评论:(0)  加入收藏
背景在查询类开发中我们有使用缓存的场景,一般可以使用Redis作为缓存,来缓解数据库如MySQL的压力。使用缓存的步骤为:“(1)从Redis缓存中获取数据,如果存在数据,直接返回值。(2)如果...【详细内容】
2020-08-28   AOP  点击:(2)  评论:(0)  加入收藏
今天是刘小爱自学Java的第123天。感谢你的观看,谢谢你。 学过很多面向XX编程,比如:面向过程编程,面向对象编程,面向接口编程,现在又是面向切面编程。但是不管如何,说来说去最终都是...【详细内容】
2020-08-15   AOP  点击:(2)  评论:(0)  加入收藏
OOP和AOP都是一种编程思想,在很多主流框架中都有应用。OOP是指面向对象编程,AOP是面向切面编程。AOP是对OOP的扩展,使用AOP可以更方便的对业务代码进行解耦,从而提高代码质量和...【详细内容】
2020-07-15   AOP  点击:(6)  评论:(0)  加入收藏
原文地址: https://gyl-coder.top/spring/spring-ioc-aop/ 。这篇文章会从下面从以下几个问题展开对 IoC & AOP 的解释 什么是 IoC? IoC 解决了什么问题? IoC 和 DI 的区别? 什...【详细内容】
2020-06-24   AOP  点击:(6)  评论:(0)  加入收藏
基本介绍代理模式是一种结构性设计模式。为对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,并允许在将请求提交给对象前后进行一些处理。被代理的对象...【详细内容】
2020-06-23   AOP  点击:(8)  评论:(0)  加入收藏
面向方法的数据集缓存使用了autofac做为ioc容器,使用Autofac.Extras.DynamicProxy2作为方法拦截器,缓存面向方法,直接在方法上添加CachingAttribute特性即可。缓存注册流程 关...【详细内容】
2019-10-15   AOP  点击:(33)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条