Spring Aop初步理解到深入底层

一.理解Aop

1.什么是Aop

Aop(Aspect Oriented Programming),意为面向切面编程。
利用Aop对业务逻辑的各个部分来进行隔离,可降低业务逻辑各部分之间耦合度,可提高程序重用,和开发效率。
如何来理解这个切面?
首先在开发过程中,关注点在业务是从业务着手,由众多功能组成一块业务。面向切面就不关注业务,从功能着手,将一个通用功能从众多业务类中分离出来独立成类,使众多类来共享这一通用功能,当这一通用功能发生变化,我们只需要修改这一个类,而不需要去修改其他的类,此时该类就可以看作一个切面。简单来说,Aop就是将通用功能抽取出来。面向切面,就是关注通用功能,而不关注业务。OOP(面对对象编程)是关注业务的,这是它们的区别。

2.Aop有什么用

1)将通用功能从业务逻辑中抽取出来,提高代码的复用性,有利于后期维护和扩展
2)设计系统时,抽出通用功能(切出切面),降低系统架构的复杂度

3.Aop应用场景

过滤器其实就是Aop的一种实现、日志记录、授权认证、事务管理、错误处理等等

4.如何使用Spring Aop

核心概念:
切面(Aspect):类是物体特征的抽象,切面就是对横切关注点(通用功能)的抽象
连接点(Joint Point):被拦截到的点,Spring中只支持方法类型的连接点,所以在Spring中连接点就是指被拦截到的方法
切入点(Pointcut):对连接点进行拦截的定义
通知(Advice):通知就是指拦截到连接点之后要执行的代码
织入(Weave):将切面应用到目标对象并导致代理对象创建的过程
引入(Introdution):在不修改代码的前提下,引入可以在运行期为类动态的添加一些方法或字段
Aop编程主要参与三步(使用注解方式,xml配置方式可自行了解):
1)定义业务组件
@Aspect注解标识切面类
2)定义切入点
@Pointcut注解标识切入点
两个常用表达式:execution()、annotation()
execution(<修饰符模式>? <返回类型模式> <方法名模式>(<参数模式>) <异常模式>?)
返回类型模型、方法名模型、参数模型三项必选,其他可选

@Pointcut("execution(* com.example.spring..*.*(..))")

第一个代表所有返回类型,表示所有
com.example.spring…
.
(…) :com.example.spring包地址,后面两个点表示当前包和当前包的所有子包,接下来的表示所有类,再接下来的表示所有方法,(…)表示任何参数
3)通知处理
有下面五类通知

通知类型简介
@Before(前置)被拦截方法调用之前执行
@After(后置)被拦截方法调用之后执行
@AfterThrowing(异常)被拦截方法抛出异常后执行
@AfterReturning(最终)被拦截方法执行成功后执行(遇到异常不执行)
@Around(环绕)相当于合并了前置和后置也能进行异常

二.Spring Aop源码解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值