Spring AOP相关概念

AOP面向切面编程

AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。AOP采取横向抽取机制,替代了传统纵向继承体系重复性代码。在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等。

简单的说,AOP就是在扩展功能时,我们不用修改原有的代码就能实现。例如,我们UserService中有个添加用户的方法add,我们现在需要再添加用户后打印日志,传统的做法我们要修改add方法,在add方法中加入打印日志的代码;但是通过AOP我们就不需要修改add方法,只要在写一个打印日志的类LogService,然后在LogService类添加log方法,我们通过配置LogService类和其log方法,就能实现在调用add方法后,执行LogService中的log方法。

AOP中的相关概念

  • 切面(aspect):散落在系统各处的通用的业务逻辑代码,如日志模块,权限模块,事务模块等。通常是一个类,例如我们上面提到的LogService类就是一个切面。在代码中,可以简单地认为, 使用 @Aspect 注解的类就是切面。
  • 连接点(Join point):比如:方法调用、方法执行、字段设置/获取、异常处理执行、类初始化、甚至是 for 循环中的某个点都可以认为是连接点,理论上, 程序执行过程中的任何时点都可以作为作为连接点。但 Spring AOP 目前只支持方法的调用。也就是说Spring AOP中的连接点就是所有的方法。
  • 切入点(pointcut):拦截的方法,连接点拦截后变成切入点。例如上文中UserService除了有add方法外,还有update,delete等方法,但我们只要在add方法后添加日志,UserService中的所有方法都是连接点,但add才是切入点。切入点就是实际需要拦截的切入点,就是带有通知的连接点,在程序中主要体现为书写切入点表达式。连接点是AOP能够拦截的方法,切入点是指实际拦截的方法。
  • 通知(advice):所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类。上文中LogService类中的log方法就是一个通知,他要在add方法后执行,显然log方法是后置类型的通知。AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值