浅谈AOP

2018-05-14
  • 1418
  • 0

面向切面编程(Aspect Oriented Programming),Spring的核心技术之一。OOP的核心理论是万物皆对象,任何实体都可以抽象成对象,主要依赖对象的属性和行为,并通过继承和实现来定义类之间关系,通过操作类的实例来完成特定实际业务中的逻辑和需求。

但是想让多个不同的类来共享一个操作或者行为,OOP就显得无力了。这时候就体现出来了AOP的重要性,AOP可以把分散的对象引入公共的行为中,在多个类中把相同的某个具体行为构成一个切面,实现多类之间的共享,这样我们可以只关注切面,无须去更改每个类的相同具体实现,减少了大量的重复操作,提高了代码的可重用性。

另外AOP也解决了代码混乱的问题,否则当越来越多的非业务需求不断的加入,原有的业务方法就显得极具繁琐和膨胀,大量的冗余就会造成代码混乱,不易于后期的开发及运维,代码的耦合度也比较高。

系统中常用的切面行为主要有记载日志,验证功能。

当越来越多的非业务需求不断的加入,原有的业务方法就显得极具繁琐和膨胀,大量的冗余会造成代码混乱。AOP的特性解决了代码分散和代码混乱的问题。

AOP主要分为,切点、切面、增强、目标、代理。

切点:通过特定的条件来拦截所有符合条件的类,这个特定条件即称为切点。

切点主要分为:静态切入点、动态切入点、自定义切入点。静态切入点只需给出具体的方法和目标类。Spring只会在第一次的时候进行计算切点位置并进行缓存记录。动态切入点相对于静态切入点,可以设置方法的参数,但是由于参数可变,所以需要每次计算切点位置,对性能消耗会比较大。自定义切入点是通过特定的连接点来处理具体逻辑,需要注入到连接点上。

增强主要分为:前置增强、后置增强、环绕增强、返回增强、抛出增强、引入增强。通过实现不同的接口来对某个方法进行前置操作,后置操作,结束后操作,异常捕捉后操作,合并操作等等。

AOP好处总结:主要降低了代码的耦合度,提高了代码可重用性,使系统更易于扩展,是一个非常好的编程范式。